黑马程序员技术交流社区

标题: gets函数与scant函数的区别 [打印本页]

作者: 77媛儿    时间: 2014-2-26 15:59
标题: gets函数与scant函数的区别
1.gets函数可以一次接收一行输入串,其中可以有空格,也就是说空格可以做为字符串的一部分输入.
而scanf函数接收的字符串不会含有空格,即遇到字空格时,认为字符串输入结束,也就是说空格是scanf默认的结束符号。scanf和gets不能混合使用,如果一个程序中用scanf的话,一般不能再用gets,反之亦然。
2.gets()输入字符串时,可以包含空格在内的字符,在回车时,自动将字符串结束标志'\0'赋予字符数组最后一个元素。scanf函数不能输入包含空格字符的字符串,也就是说空格是scanf默认的结束符号。
3.如果像你在你的程序中提到的只把for循环中gets改为scanf的话,在后面该输入的时候直接跳过的原因是,在结束前一个scanf输入时输入的回车被后一个gets输入时接受,也就是说前一个地方输入的“数据+回车”分别被两个地方接受。此种问题会出现在gets和scanf交接处。只需要在程序中统一改为scanf和gets就可以了。

作者: meegor    时间: 2014-3-8 11:02
但是用gets()函数在Xcode里会警告不安全,怎么破呢?

  1. warning: this program uses gets(), which is unsafe.
复制代码

作者: 脸皮猴    时间: 2014-3-8 23:00
meegor 发表于 2014-3-8 11:02
但是用gets()函数在Xcode里会警告不安全,怎么破呢?

我是直接无视了。。。。。
作者: 世俗孤岛    时间: 2015-3-12 20:36
很经典哦
作者: lijifeng    时间: 2015-3-13 20:57
这回复 给力啊 又学了点新东西
作者: 世俗孤岛    时间: 2015-3-17 13:04
同样的问题
作者: 小白一号    时间: 2015-3-17 15:48
我之前就遇到了这样的问题,始终输入不了一个完整的英文句子,每次只是输出第一个单词,找了好久才找到原因的。
作者: lyz0925    时间: 2015-3-18 23:44
我想说,我也想总结这个知识点,但是你总结的很好了,所以我很难过
作者: Liana_fan    时间: 2015-4-27 12:10
恩,谢谢啦,总结的很好
作者: baby14    时间: 2018-8-21 07:53
多谢分享




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2