website logo
Auteur
avatar
pierrep

Forum » » Développement » » [Résolu] - Programmation en C sur Morphos 2.1


Post� : 12-12-2008 18:40 icone du post

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


Cet article provient de Meta-MorphOS
https://www.meta-morphos.org/viewtopic.php?topic=97&forum=52