scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别。若想从键盘上输入字符串"hi hello",则应该使用 gets 函数。

gets可以接收空格;而scanf遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格。

char string[15]; gets(string); /*遇到回车认为输入结束*/

scanf("%s",string); /*遇到空格认为输入结束*/

所以在输入的字符串中包含空格时,应该使用gets输入。

scanf和gets获取字符串时的区别

在C语言中,能构获取字符串的函数至少有两个:

1.scanf()

所在头文件:stdio.h

语法:scanf("格式控制字符串",变量地址列表);

接受字符串时:scanf("%s",字符数组名或指针);

2.gets()

所在头文件:stdio.h

语法:gets(字符数组名或指针);

两者在接受字符串时:

1.不同点:

scanf不能接受空格、制表符Tab、回车等;对末尾回车符的处理:把回车符保留在缓存中。

而gets能够接受空格、制表符Tab和回车等;对末尾回车符的处理:接收回车,但把回车替换为\0.

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需输入。

scanf :当遇到回车,空格和tab键会自动在字符串后面添加'\0',但是回车,空格和tab键仍会留在输入的缓冲区中。

gets:可接受回车键之前输入的所有字符,并用'\n'替代 '\0'.回车键不会留在输入缓冲区中

gets()用到读取字符串,用回车结束输入

scanf()可以读取所有类型的变量

(转载自:http://leoenglish.blog.163.com/blog/static/1750319852011296336486/)

最新文章

  1. sharepoint 计算列 年龄
  2. java list排序
  3. 30+有用的CSS代码片段
  4. 第三次作业:caculator
  5. Windows Phone自带的语音识别
  6. Activity(一)
  7. HDU 5813 Elegant Construction (贪心)
  8. Android - 获取字符串长度的宽度
  9. 兼容性记录-class属性
  10. MVC打开电脑对话框
  11. Jexus + Kestrel 部署 asp.net core
  12. Organic Solar Cells - Theory and Practice
  13. zabbix 布署实践【2 agent安装】
  14. svn 中commit时必须填写备注信息如何设置
  15. List转换成JSON对象报错(二)
  16. ●HDU 5608 function
  17. Oracle Enterprise Linux 64-bit 下Oracle11g的监听配置修改及测试步骤
  18. Java当中的线程
  19. H5调取APP或跳转至下载
  20. 【将门创投】AI 往期技术分享

热门文章

  1. js map()处理数组和对象数据
  2. linux 命令及配置文件搜索命令which、whereis
  3. maven与ide工具的整合
  4. Hibernate 集成 Ehcache 开启二级缓存
  5. 新一代 javascript 模板引擎:artTemplate-3.0
  6. Jquery Ajax 提交json数据
  7. [翻译] BezierString
  8. 生活随记[All]
  9. marquee 标签的鼠标放上去滚动效果 鼠标离开继续滚动
  10. java Math数学工具及Random随机函数