j'ai écris un programme pour insérer des + entre les nombres d'une liste
Ce programme fonctionne si je mets des printf pour regarder ce qui se passe et il plante si je les enlève
Avec deux nombres j'avais résolu le problème en mettant une instruction bidon à la place d'un des printf
Avec trois il a fallu ajouter une deuxième instruction bidon
et avec quatre il ne marche qu'avec un printf que je n'arrive pas à remplacer par une instruction bidon n'affichant rien à l'écran
Voici le texte de ce programme :
#!!include!!
#define num1(x) (x == '0' || x == '1' || x == '2' || x == '3' )
#define num2(x) (num1(x) || x == '4' || x == '5' || x == '6' )
#define nombre(x) (num2(x) || x == '7' || x == '8' || x == '9' )
int pos = 0;
short SauteBlancs(char *entree, short posi) {
posi += strspn (entree + posi," ");
return(posi);
}
char * somme(char *donnee)
{
char *result,*bid1,*bid2,*bid3;
short l,debut;
BOOL fin=FALSE;
result = (char *)malloc(80);
result = "";
do
{
pos=SauteBlancs(donnee,pos);
debut=pos;
bid1 = "";
if (!nombre(*(donnee + pos)))
{
fin=TRUE;
}
else
{
pos ++;
while (nombre(*(donnee + pos))) pos++;
l = pos - debut; /* L : longueur du nombre */
bid1 = (char *)strncat(result,donnee + debut,l);
printf("result1 : %s \n",result);
/*sprintf(bid3,"%d",2);*/
sprintf(bid2,"%s",""); /* instruction bidon sans laquelle ça plante !! */
bid1 = (char *)strcat(result," + "); /* on ajoute un + Ã la suite */
/*printf("result2 : %s \n",result);*/
sprintf(bid2,"%s","");
}
}
while (!fin);
free(bid1);
free(bid2);
free(bid3);
result[strlen(result)-2] = '\0'; /* on enleve le + en trop */
return(result);
}
int main()
{
char *entree=" 1 2 3 4";
printf("resultat : %s\n",somme(entree));
}
Quelqu'un peut-il me dépanner ?
Merci
Message édité par : Papiosaur / 20-12-2008 19:36