gets()和scanf()

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.csdn.net/jiangjieqazwsx/article/details/43192199

猜你喜欢

转载自blog.csdn.net/qq_43361844/article/details/87472009
今日推荐