gets(str) 函数和 scanf("%s",str) 区别:
二者都是从终端读入字符串.
功能为:
1, gets 功能为读入一行, 并将换行符转换为字符串结束符.
2, scanf("%s",s); 读入时, 遇到空白字符, 包括空格, 制表符, 换行符时均会停止输入.
从功能上可以看出不同之处:
1, 终止条件不同. gets 只有遇到 \ n 时才会结束输入, 而 scanf 遇到空格或制表符时, 也会结束输入. 比如输入 "test string\n".
用 gets 得到的字符串为 "test string", 二用 scanf 得到的是 "test".
2, 终止后, 对终止字符处理不同. 比如输入为 "test\nabcd".
执行 gets 后,\n 不会留在缓冲区中, 即这时调用 getchar 得到的字符是'a'.
执行 scanf 后,\n 会留在缓冲区, 这时调用 getchar 得到的字符是'\n'.
来源: http://www.bubuko.com/infodetail-2879981.html