Во-первых, извините за мой плохой английский, хорошо перейдите к этому вопросу выше. Я занимался серфингом много для справки об этом вопросе на многих сайтах, но пока не нашел правильного ответа.C Программирование - Разрешить/определить/проверить «пробел (& # 32)» ввод в целое число
Я пытаюсь создать программу на языке C, которую эта программа может определить, если пользователь вводит целое число или нет, если пользователь не вводил целое число, а затем попросил попросить пользователя ввести целое число и т. Д. Все нормально, когда я использую scanf() возвращаемое значение в условном выражении, но проблема в том, что когда пользователь вводит «пробелы/пробелы/пробелы» (по коду ascii как & # 32) и нажмите «enter», моя программа останется включенной для ожидания ввода пользователем каких-либо символов или целого числа.
Мне просто жаль, что если вход «whitespace/blackspace/space», программа будет повторять запрос пользователю ввести целое число или программу просто остановить.
Вот случай код:
#include <stdio.h>
int main() {
int number, isInt;
printf("Input a number : ");
do {
if ((isInt = scanf("%d", &number)) == 0) {
printf("retry : ");
scanf("%*s");
} else if (number < 0) {
printf("retry : ");
}
} while (isInt == 0 || number < 0);
printf("%d\n", number);
return 0;
}
Я новичок в C, и любопытно об этом. Я знаю, если я использую% [^ \ n] < - код для строки scanf() и преобразовываю его в integer, программа, которую я имею в виду, будет работать правильно. Есть ли другой способ решить эту проблему, используя формат кода% d? или с помощью scanf()?
Пожалуйста, помогите мне разбить мое любопытство, Regards: D
зсапЕ() не будет обрабатывать, что, как ответ на http://stackoverflow.com/questions/6582322/what-does-space-in-scanf-mean показывает. попробуйте http://stackoverflow.com/questions/3765023/how-do-i-read-white-space-using-scanf-in-c?rq=1 – Toby
Прочитайте символы один за другим через 'scanf ("% c ", & character)' и преобразовать строку, считанную в integer, одним из решений. Если использование 'scanf()' не требуется, 'getchar()' должно быть лучше для этого использования. – MikeCAT