下面的代码会进行一些字符串操作。我的问题是,如果没有输入节奏和/或文字,我想退出程序。换句话说,如果我按下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;
}
答案 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);