Problème code C

Fermé
bapreb Messages postés 61 Date d'inscription mercredi 20 février 2008 Statut Membre Dernière intervention 22 août 2013 - 17 nov. 2008 à 18:01
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 17 nov. 2008 à 18:51
Bonjour,

J'ai un problème avec de code :

int eval1(char *valeur)
{
char d;
int a,b;

a=0;
b=0;
d='n';

while(*valeur >= '0' && *valeur <= '9')
{
a *=10;
a+=*valeur -48;
valeur++;
}

if (*valeur != ' ' && *valeur != '+' && *valeur != '-' && *valeur != '*' && *valeur != '/')
{
puts("Erreur de synthaxe");
}
else
{
while(*valeur < '0' && *valeur > '9')
{
valeur++;
}
if(*valeur == '+')
{
d = '+';
valeur++;
}
else if(*valeur == '-')
{
d = '-';
valeur++;
}
else if(*valeur == '*')
{
d = '*';
valeur++;
}
else if(*valeur == '/')
{
d = '/';
valeur++;
}

}
while(*valeur < '0' && *valeur > '9')
{
valeur++;
}
while(*valeur >= '0' && *valeur <= '9')
{
b *=10;
b+=*valeur -48;
valeur++;
}
if ( d == '+') printf("Le resultat est : %ld",(a+b));
else if ( d == '-') printf("Le resultat est : %ld",(a-b));
else if ( d == '*') printf("Le resultat est : %ld",(a*b));
else if ( d == '/') printf("Le resultat est : %ld",(a/b));
};

Le compilateur me le compile nickel mais en fait a l'execution il me sort :

./TP1: line 5: Erreur de syntaxe près du symbole inattendu « char »
./TP1: line 5: `function eval1(char * valeur);'

la ligne 5 correspond a mon "char d;"

impossible de trouver d'ou vient l'erreur.

merci de votre aide.
A voir également:

1 réponse

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
17 nov. 2008 à 18:51
Le compilateur me le compile nickel mais en fait a l'execution il me sort :

./TP1: line 5: Erreur de syntaxe près du symbole inattendu « char »
./TP1: line 5: `function eval1(char * valeur);'


Donc le compilateur ne te le compile pas. Ce n'est pas à l'exécution que tu peux obtenir une erreur comme ça.

Sinon, il est possible également que l'erreur vienne d'ailleurs. Peux-tu poster ton code entier (notamment le main), si ce n'est pas trop volumineux ?

Sinon, dans ta fonction, tu n'as fait aucun return, alors que tu l'as déclaré en int.
Dans certains endroits de ton programme, tu as mis while(*valeur<'0' && *valeur>'9'); un || marchera mieux ;).

Sinon j'ai pas regardé plus en détail ton code, j'attends ta réponse.

Cdlt
0