Я просто использую функцию scanf()
. Код ниже:
scanf("%d",&a); printf("%d",a);
Когда я ввожу 1, он печатает 1, как я хочу. Но даже когда я ввожу 1a, он печатает 1, как раньше. когда пользователь вводит что-то не целое ((ex) 2,3,12ab, 1 a) Я хочу показать пользователю предупреждение как «целое число ввода».
Как я могу решить эту проблему?
Прочитайте все это в строку с помощью fgets()
.
Если вы просто хотите, чтобы все они входили, чтобы быть одним int
, пройдите строку и найдите isdigit()
для каждого символа, а затем, когда вы обнаружите, что все это просто цифры, вызовите strtod()
, если нет, испустите ошибку и повторите -незамедлительный.
Если вы хотите, чтобы несколько вещей анализировались из одной и той же строки ввода, вам нужно разобрать строку с чем-то вроде strtok()
чтобы получить отдельные токены по одному, а затем посмотреть на каждый токен и определить, является ли это числом, глядя на если каждый символ isdigit()
или равен '-' '.'
и так далее. Если это так, проанализируйте его как число с помощью strtol()
или strtod()
(и т. Д.) (В зависимости от того, что вы видите, int или float / double.) В противном случае проанализируйте токен в виде строки или испустите ошибку.