退出无限循环

时间:2013-10-11 14:01:42

标签: c visual-studio-2010 exit

下面的代码会进行一些字符串操作。我的问题是,如果没有输入节奏和/或文字,我想退出程序。换句话说,如果我按下ENTER(新行)并且没有输入任何内容来读取scanf(),那么程序必须完成。如你所见,我设置了一个条件,当节奏不在范围之间[2,6] ],程序完成了。

int main()
{
   char text[80]; // To storage the text string 
   int rhythm; // To storage the rhythm value
   int k;
   banner();
   for( ; ; ){
        scanf("%i %79[^\n]", &rhythm, text);
        if(rhythm < 2 || rhythm > 6) break; // Termination of loop 
        printf("%s\n", text); // Printing original text
        conversion(text, rhythm); 
        printf("%s\n\n", text); // Printing modified text      
   }
   bye();     
   return 0;
}

3 个答案:

答案 0 :(得分:0)

试试这个

 if(rhythm < 2 || rhythm > 6 || text[0] == "\n") break;

答案 1 :(得分:0)

如果用户想要以 Enter 结尾,而不是直接使用scanf,我建议您阅读整行,并使用sscanf进行分析并使用这些函数的返回值:

 char buffer[255];

 for( ; ; ){
      if(!fgets(buffer,255,stdin))
         break;
      s=sscanf(buffer,"%i %79[^\n]", &rhythm, text);
      if (s!=2)
         break;
      // ...   
  }

答案 2 :(得分:-1)

在这种情况下,您不应使用for循环:

do
{
   ...
}
while(rhythm >= 2 && rhythm <= 6);