Problème code C
bapreb
Messages postés
61
Date d'inscription
Statut
Membre
Dernière intervention
-
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
fiddy Messages postés 11069 Date d'inscription Statut Contributeur Dernière intervention -
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.
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:
- Problème code C
- Code ascii - Guide
- Code puk bloqué - Guide
- Comment déverrouiller un téléphone quand on a oublié le code - Guide
- Code activation windows 10 - Guide
- Code blocks - Télécharger - Langages
1 réponse
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
./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