标题:scanf("%s",str1)与 gets(str1)的读取原理区别
只看楼主
dj125
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-8-16
结帖率:33.33%
已结贴  问题点数:18 回复次数:8 
scanf("%s",str1)与 gets(str1)的读取原理区别
#include<stdio.h>
#include<stdlib.h>
#include<string.h>

int main()
{
    char str1[20];
    printf("请输入字符串str1:");
    scanf("%s",str1);
//  gets(str1);
    printf("%s",str1);
    system("pause");
    return 0;
}
问题: 采用scanf("%s",str1)输入:键盘输入的字符串中有空格或者制表符则不能完全读取
     示例:输入One World!后,printf只显示One??????
但是gets()可以完全接受,因为它读取以换行符为结束标志的。
搜索更多相关主题的帖子: 标志 include system return 
2012-08-21 10:56
dj125
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2012-8-16
得分:0 
求教!!!!望给予回复
2012-08-21 10:57
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
得分:3 
scanf("%s")遇到空格、制表符、回车、换行之类终止,这是scanf()函数设计的行为。

授人以渔,不授人以鱼。
2012-08-21 13:21
陈风
Rank: 1
等 级:新手上路
帖 子:3
专家分:5
注 册:2012-8-21
得分:3 
   gets(str1)只是用来读取字符串
2012-08-21 17:52
a7882669
Rank: 4
等 级:业余侠客
帖 子:192
专家分:290
注 册:2012-4-17
得分:3 
以下是引用TonyDeng在2012-8-21 13:21:31的发言:

scanf("%s")遇到空格、制表符、回车、换行之类终止,这是scanf()函数设计的行为。

然后  gets()就全盘接收
2012-08-21 18:39
zhangqi_gsts
Rank: 6Rank: 6
来 自:甘肃天水
等 级:侠之大者
威 望:1
帖 子:227
专家分:457
注 册:2011-3-27
得分:3 
scanf与空格和回车结束,gets只遇回车结束,读取整行
2012-08-27 22:36
yijingtao
Rank: 2
等 级:论坛游民
帖 子:16
专家分:12
注 册:2012-8-16
得分:3 

C^
2012-08-27 22:58
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
得分:3 
感觉楼主问的问题自己后面答了呀。读取原理是想问哪方面的?
2012-08-28 09:45
q215236213
Rank: 4
等 级:业余侠客
威 望:1
帖 子:148
专家分:276
注 册:2012-7-24
得分:3 
回复 6楼 zhangqi_gsts
同解
2012-08-28 11:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-379854-1-1.html




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

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