WarMj:键盘缓冲区残余信息问题

问题代码

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();都可以。
其中后两者视情况而定,前者全部情况适用。

你可能感兴趣的:(WarMj:键盘缓冲区残余信息问题)