我花了一些时间来解决这个问题,并决定来这里看看是否有人能够帮助我。 我制作了一个给定的文本文件,并且在程序运行时将文本文件的内容发送到程序。 例如: 如果我说
scanf("%d", &integerOne);
那么我的文本文件应该将第一行(例如)数字 8 放入该插槽中 我希望它继续执行此操作,直到到达文件末尾,但这就是我遇到麻烦的地方。
与上面的示例不同,我使用的是字符:
while((scanf("%s", userstring)) != EOF)
{
if(userstring[0] == 'c')
{
scanf("%d", &cinput);
}
if(userstring[0] == 'a')
{
scanf("%d", &cone);
scanf("%d", &cone);
}
}
只是为了一些背景,我创建了数组“userstring”来保存“c”(用于连接)或“a”(用于添加)。当程序没有收到任何更多的“char”输入时,我试图让程序执行循环和其他函数。 您所有的见解都非常有帮助。非常感谢,亚历克斯。
最佳答案
scanf
返回已成功匹配并分配的输入项的数量,因此最好检查其返回值是否等于1
。另请注意,此循环内的 scanf
调用可能会失败,因此,如果输入可能无效,您还应该检查它们的返回值:
while (scanf("%s", userstring) == 1)
{
if (userstring[0] == 'c')
{
if (scanf("%d", &cinput) != 1)
return -1; // TODO: scanf failed
}
...
}
并回答您的实际问题:while
始终提示用户输入另一个字符串,因为停止此读取的唯一方法是输入输入结束控制代码,即< kbd>Ctrl+Z(在 Windows 上)或 Ctrl+D(在 Mac、Linux、Unix 上)。
关于c - 带 EOF 的 While 循环始终提示输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15303814/