Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 扫描EOF和循环_C_Eof - Fatal编程技术网

C 扫描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返回读

这是学校的作业,但我无法让我的回路工作。我们必须使用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返回读取变量的数量,在您的情况下仅为一个,或者在文件结束的情况下返回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并丢弃用户键入的内容,然后在提示符后再次调用。因此,它在每次提示符前都等待额外的输入。