关于scanf函数c语言中scanf的用法法

Scanf函数的用法_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Scanf函数的用法
上传于||文档简介
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
下载文档到电脑,查找使用更方便
还剩4页未读,继续阅读
你可能喜欢使用scanf函数时碰到的问题,求高手解答
[问题点数:40分,结帖人w]
使用scanf函数时碰到的问题,求高手解答
[问题点数:40分,结帖人w]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
2012年11月 Linux/Unix社区大版内专家分月排行榜第二2011年8月 Linux/Unix社区大版内专家分月排行榜第二2008年10月 C/C++大版内专家分月排行榜第二
2012年8月 Linux/Unix社区大版内专家分月排行榜第三
2012年4月 C/C++大版内专家分月排行榜第一
本帖子已过去太久远了,不再提供回复功能。scanf函数用法详解_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
scanf函数用法详解
上传于||文档简介
&&s​c​a​n​f​函​数​用​法​详​解
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩2页未读,继续阅读
你可能喜欢关于gets()函数和scanf()函数的区别
关于gets()函数和scanf()函数的区别
& & & & &gets()函数和scanf()函数都是编写程序非常常用的函数,正因为它的常用,一些程序编写人员往往忽略了其两者的一些区别,这就造成了有时候程序运行错误,但是怎么也找不到原因的现象,今天我们就看看它们究竟有什么区别!
非常明显的一点:gets()只能输入字符串,scanf()功能相对就比较多了,只要有相应的格式控制符,如%d,%c,%lf......,就可以输入整型,字符型,浮点型等数据。
& & & & &scanf()结束字符串的输入可以用回车,空格,制表(tab 相当于好几个空格)键,而gets()只能用回车键,这也说明了scanf()函数不能输入空格,gets()则可以。看如下代码和运行结果:
#include&stdio.h&
#include&string.h&
int main(void)
char a[100],b[100];
printf(&gets()输入:\n&);
printf(&scanf()输入:\n&);
scanf(&%s&,b);
printf(&%d\n%d\n&,strlen(a),strlen(b));
可明显看出gets()包含空格,而scanf()则到空格结束。
& & & & &gets()函数可接收回车之前的所有字符,并把‘\0’替换为‘\n’,不会在缓冲区留下东西,而scanf()则是在输入有效字符后在结尾加一个'\0',而输入的结束标志(回车,空格,制表)会留在缓冲区中,也可以这样理解,对于gets()来说,最后输入的“\n”会变成‘\0’,而scanf()当输入结束标志时,是把结束标志存到缓冲区中,然后再字符串后面加一个'\0'。看如下程序和运行结果:
#include&stdio.h&
#include&string.h&
int main(void)
char a[100],b[100];
printf(&scanf()输入:\n&);
scanf(&%s&,a);
& & printf(&gets()输入:\n&);
printf(&%d\n%d\n&,strlen(a),strlen(b));
为什么是3和4呢???
& & & & 因为scanf()是以空格结束的,并且结束后的字符要存到缓冲区中,所以abc是scanf()中的有效字符3个,后面的字符'空格'+def+'回车'(注意,后面还有一个回车键)则存到了缓冲区中,共5个字符,接下来又用gets()输入,把缓冲区里的东西‘空格’+abc+‘回车’输入到了gets()中,当遇到回车的时候‘\n’变为‘\0’作为结束标志,所以最后输出4。所以以后使用这两个函数的时候,尤其是混合使用的时候要注意这种情况的发生。
& & & & 最后,还有一个相同点,其实已经说过了,就是当输入完成的时候,数组中的最后一个字符都是'\0',因此有时候用到循环的时候,没必要先用strlen()求字符的个数,而是直接用数组名[下标]!=‘\0’作为条件。
我的热门文章
即使是一小步也想与你分享}

我要回帖

更多关于 scanf s用法 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信