Это упрощенная версия моего кода:Нужна помощь выяснить бесконечный цикл
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;
}
Проблема с петлей во время работы навсегда, хотя я ожидал его, чтобы остановить после последней цифры 1
. И мой ожидаемый результат: t = 20
.
Ваш выход будет «t = 8». Ваш код обрабатывает строки, добавляя все цифры вместе, не обращая внимания на операторов. Кроме того, вы должны использовать 'strtol()' для обработки чисел. 'int t = 0; while (* s) {if (isdigit (* s)) t + = strtol (s, & s, 10); } 'на самом деле сделал бы трюк, который я считаю, по крайней мере, пока вы не захотите добавить умножение и деление. Даже тогда вы все равно должны придерживаться 'strtol()'. –