您的位置:首页 > 编程语言 > C语言/C++

gets与scanf_C语言中两种字符串输入方法比较

2013-06-05 00:00 309 查看
在C语言中存在两种字符串输入方法:

第一种:gets()函数
--程序1---
1 #include <stdio.h>
2 #include <string.h>
3 int main()
4 {
5 int i;
6 char str[20];
7 for (i=0; i<20; i++)
8 {
9 str[i] = 'a';
10 }
11 gets(str);
12 printf("字符串str长度:%d\n", strlen(str));
13 printf("打印字符串:%s\n", str);
14 for (i=0; i<20; i++)
15 {
16 printf("第%d个字符:%c\n", i+1, str[i]);
17 }
18 return 0;
19 }

第二种:scanf()函数
--程序2-----------
1 #include <stdio.h>
2 #include <string.h>
3 int main()
4 {
5 int i;
6 char str[20];
7 for (i=0; i<20; i++)
8 {
9 str[i] = 'a';
10 }
11 scanf("%s", str);
12 printf("字符串str长度:%d\n", strlen(str));
13 printf("打印字符串:%s\n", str);
14 for (i=0; i<20; i++)
15 {
16 printf("第%d个字符:%c\n", i+1, str[i]);
17 }
18 return 0;
19 }

如果输入:hello回车
--程序1输出------------
字符串str长度:5
打印字符串:hello
第1个字符:h
第2个字符:e
第3个字符:l
第4个字符:l
第5个字符:o
第6个字符:
第7个字符:a
第8个字符:a
第9个字符:a
第10个字符:a
第11个字符:a
第12个字符:a
第13个字符:a
第14个字符:a
第15个字符:a
第16个字符:a
第17个字符:a
第18个字符:a
第19个字符:a
第20个字符:a
--程序2输出---------
字符串str长度:5
打印字符串:hello
第1个字符:h
第2个字符:e
第3个字符:l
第4个字符:l
第5个字符:o
第6个字符:
第7个字符:a
第8个字符:a
第9个字符:a
第10个字符:a
第11个字符:a
第12个字符:a
第13个字符:a
第14个字符:a
第15个字符:a
第16个字符:a
第17个字符:a
第18个字符:a
第19个字符:a
第20个字符:a
如果输入:hello空格world回车
--程序1输出----------------
字符串str长度:11
打印字符串:hello world
第1个字符:h
第2个字符:e
第3个字符:l
第4个字符:l
第5个字符:o
第6个字符:
第7个字符:w
第8个字符:o
第9个字符:r
第10个字符:l
第11个字符:d
第12个字符:
第13个字符:a
第14个字符:a
第15个字符:a
第16个字符:a
第17个字符:a
第18个字符:a
第19个字符:a
第20个字符:a
--程序2输出--------------
字符串str长度:5
打印字符串:hello
第1个字符:h
第2个字符:e
第3个字符:l
第4个字符:l
第5个字符:o
第6个字符:
第7个字符:a
第8个字符:a
第9个字符:a
第10个字符:a
第11个字符:a
第12个字符:a
第13个字符:a
第14个字符:a
第15个字符:a
第16个字符:a
第17个字符:a
第18个字符:a
第19个字符:a
第20个字符:a
分析:对于scanf()会过滤空格,不接受空格后面的字符。但gets()会接受。2个函数在给变量赋值时都会将
字符串最后一位变为'\0'。例如上面输入 hello回车 后,第6个字符打印时不显示,其实是'\0'这个字
符,这个字符在屏幕上打印不出来。如果我们输入一串超过20个的字符串,程序运行时会显示错误。
那么如何能让scanf()能接受空格呢?可以在scanf()进行格式控制
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  gets scanf
相关文章推荐