Как я могу различать целое число и символ при использовании scanf ()

Я просто использую функцию 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.) В противном случае проанализируйте токен в виде строки или испустите ошибку.