Я не могу получить isdigit
для работы. Вот некоторые из моего кода.Почему isdigit всегда возвращает false?
void input(int *array, int size) {
int x;
printf("Give me ten numbers. \n");
for (int i = 0; i < size; i++) {
do {
printf("Array[%d]: ", i);
scanf("%d", &x);
scanf("%*[^\n]");
} while (!isdigit(x));
array[i] = x;
}
}
Целью этой программы является чтение целого числа от клавиатуры с scanf
(который не является проблемой). Если вход не является числом, он должен повторить цикл while, пока пользователь не даст номер. С isdigit
вы сможете определить, является ли символ целым числом или нет. Он возвращает 1, если целое число, 0, если нет. По крайней мере, так должно быть. В этом коде он всегда возвращает 0.
Что значит "не работает" значит, тебе? Опишите результат и ожидаемый результат. Кроме того, помните, что I/O может fai: вы должны проверить возвращаемое значение 'scanf()'. – unwind
Какова цель данного кода? – RoadRunner
Вопросы поиска справки по отладке («почему этот код не работает?») Должны включать в себя желаемое поведение, конкретную проблему или ошибку и кратчайший код, необходимый для воспроизведения в самом вопросе. Вопросы без четкого описания проблемы не полезны другим читателям. См.: Как создать минимальный, полный и проверенный пример. – Olaf