【发布时间】:2020-12-16 17:39:31
【问题描述】:
有没有办法使用 scanf(不使用任何其他 I/O 函数)来检查用户输入是否仅存在于单个整数之后没有任何内容?
例如:
int g;
while(scanf("%d", &g)!=1){
printf("\nincorrect input, try again");
}
这适用于像“/”或“-”这样的输入,但是当您输入“54.32”时,它将一直读取到“.”,scanf 的读取计数将为 1,54 将存储在 g 中。有没有办法检查输入是否仅由一个整数组成,后跟一个换行符?
我想知道是否存在不使用 fgets 或任何其他 IO 功能的解决方案?
【问题讨论】:
-
scanf 用于读取格式化输入。对无格式输入无用。
-
"%d%c"然后如果返回 2 并且字符不是'\n'- 存在无关字符。 (但您确实应该使用fgets()进行所有用户输入,如果需要,使用sscanf()进行转换)