TLDR:我需要检查我用scanf扫描到数组中的输入是否真的是一个整数,同时使用EOF。
我需要将数字扫描到一个数组中,直到EOF为止。我使用静态分配的内存来完成所有操作,因为我是一个初学者,目前动态分配的内存对我来说很难理解。我还使用getc来获取最后的“\n”输入(但这不是问题-只是说出来让你知道)。我的第一个想法是:
while(scanf("%d", &number[i][j]) != EOF )
**some code**
但是这个解决方案不检查输入是否是整数,例如我的输入是。
代码不会停止,因为最后一个数组的值是0,直到我扫描到一个数字。
while(1)
if(scanf("%d", &number[i][j]) != 1)
printf("Incorrect input.\n");
return 0;
但是由于EOF等于-1,这意味着即使在文件的末尾我也得到了输入,这是我不想要的。那么,有没有什么方法可以有更多的条件来比较scanf呢?例如(我知道这不起作用,但为了帮助你理解我的意思):
while(1)
if(scanf("%d", &number[i,j] != 1 && scanf("%d", &number[i,j]) != EOF)
printf("Incorrect input.\n");
return 0;
但是这个“解决方案”需要两次输入。我在这个网站上也找到了一些答案,建议使用其他方式来获取输入,而不是scanf,但是我需要具体使用scanf函数。
1条答案
按热度按时间jhdbpxl91#
您可以将
scanf
的返回值保存到int
类型的变量中,然后在以后对其执行进一步的测试: