这是一个小程序:
#include <stdio.h>
int main() {
char str[21], choice[21]; int size;
while(1){
printf("$ ");
fgets(str, 20, stdin);
printf("Entered string: %s", str);
if(str[0] == 'q') {
printf("You sure? (y/n) ");
scanf("%s", choice);
if(choice[0] == 'y' || choice[0] == 'Y')
break;
}
}
return 0;
}
它使用 读取字符串fgets()
。如果字符串以 a 开头q
,则确认用户是否要退出,如果用户键入 则退出y
。
当我运行它并键入q
时,会发生这种情况:
$ q
Entered string: q
You sure? (y/n) n
$ Entered string:
$
注意$ Entered string:
. 显然,fgets()
即使我没有输入任何内容,也输入了一个空字符或其他内容。
这是怎么回事?