scanf EOF 和循环

scanf EOF and Loops

这是一项学校作业,但我的循环无法正常工作。我们必须使用 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 returns 读取变量的数量,在您的情况下只有一个,或者在文件结尾的情况下为 EOF(即:-1)。所以我建议你使用不同的方法,如下所示:

#include <stdio.h>
#define MAX  100

int main(void){
   char str[MAX];
   int retVal;

   printf("\nEnter a String: ");
   while((retVal = scanf("%s", str)) == 1 || retVal != EOF)
   {
     printf("\nEnter a String: ");
     two_ele_subs(str);
   }
   return 0;
}