出处:http://blog.csdn.net/xingjiarong/article/details/47282817
1.不同点:
scanf不能接受空格、制表符Tab、回车等;而gets能够接受空格、制表符Tab和回车等;
scanf :当遇到回车,空格和tab键会自动在字符串后面添加’ ’,但是回车,空格和tab键仍会留在输入的缓冲区中。gets:可接受回车键之前输入的所有字符,并用’ ’替代 ‘n’.回车键不会留在输入缓冲区中
从键盘输入字符串 asd df时,遇到空格,scanf()就认为输入结束了,所以a中存放的字符串是 ‘asd ’。
从键盘输入字符串 asd df时,gets()遇到’n’才认为是结束输入了,所以a中存放的是’asd df ’。
输入asdf回车,因为scanf会将回车保留在缓冲区中,所以回车会紧接着被c取得而不需要再额外输入,所以a中存储的是’asdf ’,字符c=’n’。
结果如下:
接着输入as df回车,因为gets会将’n’替换成’ ’,所以b字符串中保留的是’as df ’,并且还是要继续输入d的值:
最后输入d的值:
二、printf()和puts()的区别
相同点:
两者都属于stdio.h这个头文件
都能输出字符串
不同点:
puts()在输出字符串时会将’ ’自动转换成’n’进行输出,也就是说,puts方法输出完字符串后会自动换行。
文章知识点与官方知识档案匹配,可进一步学习相关知识C技能树首页概览114423 人正在系统学习中
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!