scanf()去缓冲区的东西时只是取到tab键,空格键,截止,但是scanf()函数到回车是才结束,但是回车不会被取走,还留在缓冲区之中,如果有下一个取字符的函数,直接取的就是回车;
gets()和scanf()不同gets()将回车之前的字符全部取走,之后将回车变成’\0’并且取走;
如果scanf()后面紧跟gets()那么要在两个之间加入getchar()取走回车
如
scanf("%c",&n);
getchar();
gets(str);
就不会错了。
可以参考http://www.vckbase.com/document/viewdoc/?id=1897
https://blog.youkuaiyun.com/jiangjieqazwsx/article/details/43192199
gets()和scanf()
最新推荐文章于 2024-03-26 16:13:38 发布