[C] Pb : utilisations des chaines de caracteres

Pb : utilisations des chaines de caracteres [C] - C++ - Programmation

Marsh Posté le 04-01-2003 à 18:09:49    

Bonjour,
j'ai un problème avec un prog qui change une expression parenthésée en post-fixée.
Le prog fait bien le changement, mais j'ai un probleme lors du retour de ma chaine contenant la nouvelle expression (post)
Voila le code :
//Programme principal
main()
{
 char retour;
 int priorite;
 char exp[50]="(2+5-6)*3+(5-3)/9+6";
 printf("\ntransformation : \n" );
 printf("%s",transforme(exp));
 
}
 
//Procédure transformation
char transforme(char expression[50])
{
 init(ma_pile);
 int j=0,i=0;
 char post[50];
.
.
 printf("\n post : %s",post);
 return post[50];
}
 
J'arrive bien à visualiser le contenu de post avec le printf, mais j'ai une erreur "..la memoire ne peut pas etre read" l'ors de l'appel de la fonction : printf("%s",transforme(exp));
Vous ne pensez koi ??
ça vient des déclarations ? de l'appel ?
 

Reply

Marsh Posté le 04-01-2003 à 18:09:49   

Reply

Marsh Posté le 04-01-2003 à 18:16:50    

1) merci d'utiliser les balises cpp
2) merci de poster du code complet  
3) essaye de compiler
 
 
le return truc[50] doit pas passer.
 
en C, on ne peut pas retourner un tableau, juste un pointeur. si tu tiens absolument a renvoyé un pointeur, assure toi qu'il pointe vers une zone mémoire accessible (si cette zone mémoir est locale à une fonction, bam, tu pars dans le decor)

Reply

Marsh Posté le 04-01-2003 à 18:33:18    

excuse moi, mais je pense pas pas que ce soit tres utile que j poste les 80 lignes qui font la transformation ;)
Le programme bloque sur l'appel de la fonction (et donc la recuperation de la chaine post dans le programme principal)
Si je fais un appel, il n'y a pas de probleme,
mais si je decide d'afficher ou de recuperer le resultat, là ça bloque..


Message édité par nikko le 04-01-2003 à 18:34:14
Reply

Marsh Posté le 04-01-2003 à 18:34:47    

++Taz a écrit :


le return truc[50] doit pas passer.
 
en C, on ne peut pas retourner un tableau, juste un pointeur. si tu tiens absolument a renvoyé un pointeur, assure toi qu'il pointe vers une zone mémoire accessible (si cette zone mémoir est locale à une fonction, bam, tu pars dans le decor)

²

Reply

Marsh Posté le 04-01-2003 à 18:41:08    

comment je dois faire alors pour retourner une chaine ??
(excuse, j'ai mis longtemps à comprendre ta réponse..)
j'ai essayé de faire un cast, et ça marche pas :  
char truc;
truc=(char)post[50];
return truc;
je m'y prends mal sans doute..

Reply

Marsh Posté le 04-01-2003 à 19:52:13    

retourne un pointeur vers une zone alloué dynamiquement ou passe en paramètre un pointeur vers une zone destinée à recevoir des données

Reply

Marsh Posté le 05-01-2003 à 20:01:16    

et c'est pas possible de retourner tout simplement une chaîne ?
merci pour tes réponses

Reply

Marsh Posté le 05-01-2003 à 20:28:06    

nikko a écrit :

et c'est pas possible de retourner tout simplement une chaîne ?
merci pour tes réponses

par ce que une chaine n'existe pas en C: on appelle chaine la série d'octets terminée par un 0 pointée par une variable.

Reply

Marsh Posté le 05-01-2003 à 22:50:46    

finalement, j'ai utilisé une procédure et une variable globale pour contourner mon problème...
c laid, mais bon !!
c promis, quand j'aurais progressé, j'essayerais de faire mieux ;)
merci encore pour ta patience et tes réponses ++Taz

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed