我只是使用函数scanf()
。代码如下:
scanf("%d",&a);
printf("%d",a);
当我输入1时,它会像我想要的那样打印1。 但即使我输入1a,它也像以前一样打印1。 当用户输入不是整数的东西时((ex)2.3,12ab,1 a) 我想向用户显示类似“输入整数”的警告。
我该如何解决这个问题?
答案 0 :(得分:4)
将其全部读入包含fgets()
的字符串。
如果您只想让他们输入的所有内容都是单个int
,请遍历字符串并在每个字符上查找isdigit()
,然后当您发现它只是数字时,请调用{{1如果没有,则发出错误并重新提示。
如果你想要从同一输入行解析多个东西,那么你需要用strtod()
之类的东西来解析字符串以一次获得一个令牌,然后查看每个令牌并确定它是否是通过查看每个字符strtok()
或等于isdigit()
等等来查找数字。如果是,请将其解析为带有'-' '.'
或strtol()
(等)的数字(取决于您看到的内容,int或float / double。)否则,将标记解析为字符串或发出错误。