C 扫描EOF和循环
这是学校的作业,但我无法让我的回路工作。我们必须使用scanf并在输入EOF时终止循环。这是代码中存在问题的部分:C 扫描EOF和循环,c,eof,C,Eof,这是学校的作业,但我无法让我的回路工作。我们必须使用scanf并在输入EOF时终止循环。这是代码中存在问题的部分: {int main(void){ char str[MAX]; while(scanf("%s", str) != EOF) { printf("\nEnter a String: "); scanf("%s", str); two_ele_subs(str); } return 0; } sscanf返回读
{int
main(void){
char str[MAX];
while(scanf("%s", str) != EOF)
{
printf("\nEnter a String: ");
scanf("%s", str);
two_ele_subs(str);
}
return 0;
}
sscanf返回读取变量的数量,在您的情况下仅为一个,或者在文件结束的情况下返回EOF(即:-1)。因此,我建议您使用不同的方法,如下所示:
#包括
#定义最大值100
内部主(空){
字符str[MAX];
内部检索;
printf(“\n输入字符串:”);
而((retVal=scanf(“%s”,str))==1 | | retVal!=EOF)
{
printf(“\n输入字符串:”);
两个潜水艇(str);
}
返回0;
}
运行该代码时实际会发生什么?您不能输入EOF
它不是字符。没有MAX
,没有控件用户也没有输入MAX
或更多字符,没有\include
。“无法使我的循环工作”不够具体。为什么有{
在int main
之前?通过循环每次调用scanf
两次——在while
语句中调用一次,您只需检查EOF并丢弃用户键入的内容,然后在提示符后再次调用。因此,它在每次提示符前都等待额外的输入。