在我的编程课上,我编写了一个程序来计算除数之和。所以我已经完成了最后一部分,即错误检查,如果我读入一个字符,我就会遇到问题。我已经在 S.O. 上进行了搜索。早些时候,我们也尝试过解决一些问题,但找不到适用于 100 之前无限负数的解决方案。
当我点击一个字符时,它会将其设置为 0 并直接转到末尾,我希望它在读入后退出
int main (void){
int userIN=0;
int i = 0;
int next = 0;
int temp= 105;
int cycle;
puts("Enter up to 10 integers less than or equal to 100");
while(scanf("%d ", &userIN) !=EOF && (i < 10))
{
if(userIN > 100){
printf("Invalid Input\n");
exit(1);
}
else if(userIN < 100)
{
感谢您提前提供帮助
编辑:程序正在正确循环,我的问题是对输入的字符进行错误检查,而不是代码本身的任何内容
最佳答案
如果
scanf()
无法读取格式字符串指定的值(例如使用 %d
,它遇到像 foo
这样的数据)。你可以检查一下。需要注意的是,它不会从 stdin
读取有问题的数据,因此它仍然会影响 scanf()
的下一次调用 - 这可能会导致无限循环(scanf()
报告错误,再次调用scanf()
,它遇到相同的输入,因此报告相同的错误)。
您最好使用 fgets()
读取整行输入。然后手动检查输入或使用sscanf()
(注意名称中附加的s
)。这种方法的优点是更容易避免意外用户输入的无限循环。
关于c - 在C中读取整数时对字符进行错误检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33588815/