问题代码
int main()
{
char str[128];
char c;
scanf("%s", str);\\第一个scanf
scanf("%c", &c);\\第二个scanf
system("pause");
return (0);
}
如上,scanf("%c", &c);
这句不可以正常接收字符,因为在scanf("%s", str);
中敲下“Enter”键后,会向键盘缓冲区发送一个“\r”(回车)和一个“\n”(换行),“\r”(回车)被第一个scanf接收,“\n”(换行)被第二个scanf接收,直接赋给了c。
解决办法
在两个scanf中插入 fflush(stdin); 或者getchar(); getch();都可以。
其中后两者视情况而定,前者全部情况适用。