При использовании isdigit()
существует очевидная ошибка. Эта функция (обычно макрос) используется для определения того, является ли символ одним из символов 0
.. 9
- конечно, ваш код работает с числами последовательно и нет необходимости проверять символы.
Вы захотите поближе взглянуть на то, что вы пытаетесь достичь. Вы можете спросить нас, какие функции C могут подойти.
EDIT:
Ах, вы хотите знать, является ли это забавное выражение целочисленным значением. Увы, для этого нет встроенной функции. Я не проверял это, но я бы написал
double a = (funky expr);
if (a == rint(a)) ...
... где rint()
- это функция, которая возвращает double
, которое является ближайшим целочисленным значением к данному аргументу.