- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在C 语言中,能构获取字符串的函数至少有两个:
1.scanf()
所在头文件:stdio.h
语法:scanf(格式控制字符串,变量地址列表);
接受字符串时:scanf(%s,字符数组名或指针);
2.gets()
所在头文件:stdio.h
语法:gets(字符数组名或指针);
两者在接受字符串时:
1.不同点:
scanf 不能接受空格、制表符Ta 、回车等;
而gets 能够接受空格、制表符Ta 和回车等;
2.相同点:
字符串接受结束后自动加\0。
例 1:
#include stdio.h
main()
{
char ch1[10],ch2[10];
scanf(%s,ch1);
gets(ch2);
}
依次键入asd 空格fg 回车,asd 空格fg 回车,则ch1=asd\0,
ch2=asd fg\0。
例2:
#include stdio.h
main()
{
char ch1[10],ch2[10],c1,c2;
scanf(%s,ch1);
c1=getchar();
gets(ch2);
c2=getchar();
}
依次键入asdfg 回车,asdfg 回车,则ch1=asdfg\0,c1=\n,
ch2=asdfg\0,c2 需输入。
/ncre2/cpp/fudao082652778.html
gets()与scanf()的区别
Linux C/C++ 2009-01-06 21:36:08 阅读11 评论0 字号:大中小
是否是格式化输入这么明显的就不说了……
1. gets 函数在输入字符串时,可以输入空格,空格做为字符串的一部分输入;
scanf 函数不能输入空格,即遇到字空格时,认为字符串输入结束。
2. scanf 在从stdin 流读取输入时,遇到回车键即\n,则停止,\n仍留在
输入流中,且忽略空格,使用时,如果有多个输入函数被调用,需注意对多
回车的读取,一般使用getchar();
gets 接收输入时,不对接收变量进行检查,容易产生内存溢出;
在写一个小程序,发现 scanf ()不能输入空格。首先从网上找到了一下,发现用gets ()函
数能够实现空格输入。
对gets ()函数的介绍如下:
gets ()函数的原型:char * gets(char *str)
函数功能:从标准输入流读取字符串并回显,读到回车符时退出
这个函数从系统的标准输入设备中读入字符串。在此, 假设标准输入设备为键盘。由于一个串
没有预先定义它的长度, gets()需要用一种方法来知道什么时候应该停止读入, 它的方法是一
个个读入字符直到读入一个换行 \n 符停止。这个换行符是通过敲键盘上的 [enter] 键产生
的。函数读入换行符前的所有字符但不包括换行符, 并且将读入的串送入调用它的程序。
gets() 有两种可能的返回值。如果一切顺利的话, 它返回读入的串, 正如我们说过的。如果
其中出现什么错误或 gets() 遇到一个 EOF 字符, 它返回一个 NULL 。这样 gets() 中带有一
些错误检查。
但是同时有人说不推荐使用 gets ()函数。因为它有个能致命的缺陷,就是不能指定缓冲区,
当输入的字符大于缓冲区写入的空间,会使缓冲区溢出,这将有可能会导致不可预料的错误,
这种错误可能是非常严重的。
文档评论(0)