Прочитайте все это в строку с fgets()
.
Если вы просто хотите, все они входят как единый int
, ходить строку и искать isdigit()
на каждый полукокс, а затем, когда вы обнаружите, что это все только цифры, называют strtod()
, если нет, то испускает ошибку и повторно -незамедлительный.
Если вы хотите, чтобы несколько вещей анализировались из одной и той же строки ввода, вам нужно разобрать строку с чем-то вроде strtok()
, чтобы получить отдельные жетоны по одному, затем посмотрите на каждый токен и определите, является ли это числом, глядя чтобы убедиться, что каждый символ isdigit()
или равен '-' '.'
и тому подобное. Если да, проанализируйте его как число с strtol()
или strtod()
(и т. Д.) (В зависимости от того, что вы видите, int или float/double.) В противном случае проанализируйте токен в виде строки или испустите ошибку.
Вы хотите, чтобы люди вводили только одну цифру или целое число (т. Е. 13445 было бы правильным?) –
do 'getchar()' после scanf; если он не является ни «EOF', ни' \ n », они должны были набрать другой символ после номера –
целого числа, например 12345. Кроме того, когда персонаж в стиле 123abc, я хочу поймать его и показать предупреждение. – user3628636