Ceci est une version simplifiée de mon code:Besoin d'aide pour déterminer boucle infinie
void calc(char *s)
{
int t = 0;
while (*s)
{
if (isdigit(*s))
t += *s - '0';
else
++s;
}
printf("t = %d\n", t);
}
int main(int argc, char* argv[])
{
calc("8+9-10+11");
return 0;
}
Le problème est avec la boucle en courant pour toujours, mais je me attends à arrêter après le dernier chiffre 1
. Et ma sortie attendue est t = 20
.
Votre sortie sera "t = 8". Votre code traite les chaînes en ajoutant tous les chiffres ensemble, sans tenir compte des opérateurs. En outre, vous devriez envisager d'utiliser 'strtol()' pour traiter les nombres. 'int t = 0; while (* s) {if (isdigit (* s)) t + = strtol (s, & s, 10); } 'ferait le tour je crois, au moins jusqu'à ce que vous vouliez ajouter la multiplication et la division. Même alors, vous devriez toujours rester avec 'strtol()'. –