我正在尝试创建一个 c 程序,该程序将不断从 stdin 获取输入,直到进入退出



这是我写的代码:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#define SIZE 50
int main(int argc, char *argv[])
{
char str[SIZE];
char str2[] = "exit";
//fgets(str, sizeof str, stdin);
while (strcmp(str, str2) != 0)
{
fgets(str, sizeof str, stdin);
printf("%s", str);
}
return 0;
}

但它似乎没有退出,陷入了无限循环。

一种解决方案是使用:

char str2[]="exitn";

但最好是do - while周期:

int main () {    
char str[SIZE];
char str2[]="exitn";
do {
fgets(str, sizeof(str), stdin);
printf("%s",str);
} while(strcmp(str,str2));
return 0; 
}

因为在你循环的第一次迭代中,str是空的。

最新更新