【发布时间】:2020-11-27 19:41:57
【问题描述】:
其实我在谷歌上很容易找到类似的问题,但还是不能解决我的问题。
How to prevent non-numeric input in C?
upper-link 类似情况。
这是我的代码
#include <stdio.h>
int main()
{
int n;
printf("Enter 1 or 2?\n");
scanf("%d", &n);
while(n != 1 && n != 2)
{
printf("Please do not enter other characters\n");
printf("Enter 1 or 2?\n");
scanf("%d", &n);
}
}
我希望如果用户输入其他数字(例如1、45、656)、字符(例如a、f、u、e)或字符串(例如apple),上层程序可以打印出错误信息并询问再次用户输入。
是的!如果用户输入其他数字,程序可以做我想做的事。 但!如果用户输入其他字符、字符串,程序会一直循环。
我需要向这个程序添加什么?
【问题讨论】:
-
使用
fgets读取输入。然后用sscanf解析用fgets读取的字符串。检查sscanf的返回值。如果输入是有效整数,则为1,否则为0。 -
@kaylum 谢谢!但是啊……我可以不使用 fgets 吗?那是因为我在Youtube上找到的,如果我需要使用fgets,我需要声明一个char数组。它会影响我程序中的其他功能...
-
它会影响我程序中的其他功能。这听起来不是不使用
fgets的好理由。使用fgets是最好的方法,如果您认为有一些问题阻止您这样做,请提供确切的详细信息。我敢打赌,这个原因实际上是无效的。 -
考虑使用
fgets()读取并使用strtol()提取值并允许您检查下一个无法转换的字符。如果输入不好,真的很容易循环输入另一个字符串。 -
谢谢!让我先试试 fgets 并改进我的程序!总之,似乎 fgets 是解决我的程序的最佳方法