| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3387 人关注过本帖
标题:接收字符串问题
只看楼主 加入收藏
绿茶盖儿
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:363
专家分:1852
注 册:2011-9-3
结帖率:84.62%
收藏
已结贴  问题点数:20 回复次数:6 
接收字符串问题
假设定义一个字符串str,以下两个字符串接收语句有什么区别啊?
scanf("%s",str);
gets(str);
貌似scanf不能接收空格,一遇到空格则判定字符串输入完毕,而gets可以接收空格,遇到回车时才判定字符串输入完毕,是这样吗?
搜索更多相关主题的帖子: 字符串 
2011-09-09 00:27
woshiaokeman
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:60
专家分:123
注 册:2011-4-5
收藏
得分:0 
个人理解是这样……以前好像也验证过……
2011-09-09 00:37
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:10 
另外,scanf将接收到的回车扔回到缓冲区,gets将接收到的回车符号转变为\0存入str,使用gets不检查字符串是否超出大小,存在安全问题,建议用fgets
#include  <stdio.h>
#include  <string.h>
int main(void){
    char str1[10]="aaaaaaaaa",str2[10]="bbbbbbbbb";
    scanf("%s",str1);
   // getchar();
    gets(str2);
    return 0;
}
这里面的getchar()就是为了接收扔回到缓冲区的回车,否则,str2只能接收到一个回车符。
5        scanf("%s",str1);
(gdb) s
abcdef
(gdb) p str1
$1 = "abcdef\000aa"
(gdb) p str2
$2 = "\000bbbbbbbb"


[ 本帖最后由 pauljames 于 2011-9-9 06:47 编辑 ]

经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2011-09-09 06:35
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
悲剧,发错人了

[ 本帖最后由 A13433758072 于 2011-9-9 07:10 编辑 ]

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-09 07:05
绿茶盖儿
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
威 望:1
帖 子:363
专家分:1852
注 册:2011-9-3
收藏
得分:0 
回复 3楼 pauljames
那如果我想输入一串带空格的字符,比如说"I am a stdudent",那就不能用scanf来接收了,而必须用gets或fgets了?
2011-09-09 13:05
落叶深蓝色
Rank: 8Rank: 8
来 自:山东
等 级:蝙蝠侠
帖 子:319
专家分:807
注 册:2010-12-8
收藏
得分:0 
试了一下,应该是这样
2011-09-09 13:13
Afah
Rank: 2
等 级:论坛游民
帖 子:40
专家分:70
注 册:2011-8-28
收藏
得分:10 
gets函数可以一次接收一行输入串,其中可以有空格,也就是说空格可以做为字符串的一部分输入.
而scanf函数接收的字符串不会含有空格,即遇到字空格时,认为字符串输入结束,也就是说空格是scanf默认的结束符号。
2011-09-09 13:32
快速回复:接收字符串问题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.077163 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved