C语言 gets()和scanf()函数的区别
2015-09-27 09:11
357 查看
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和回车等;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()可以读取所有类型的变量
本文出自 “Vs吕小布” 博客,请务必保留此出处http://survive.blog.51cto.com/10728490/1698515
scanf()可以读取所有类型的变量
本文出自 “Vs吕小布” 博客,请务必保留此出处http://survive.blog.51cto.com/10728490/1698515
相关文章推荐
- C语言格式控制符
- C++ new和delete重载
- 【C++ Primer】高级主题
- 【C++ Primer】面向对象编程与泛型编程
- 【C++ primer】类和数据抽象
- 【C++ Primer】容器和算法
- 【C++ Primer】基本语言
- C语言基本数据类型
- 最小生成树总结(prim、并查集和kruskal) C++实现
- C++ STL学习
- C++中对sprintf()函数的说明
- 查找数组中只出现一次的元素
- C语言打印100 ——200之间的素数
- C++之安全使用数组的4中方法
- C++ | pair
- Essential C++学习笔记系列-第一章
- C++11中的std::function
- C++: 函数返回非引用类型与返回引用类型
- Sublime text 搭建C/C++环境
- C++ getchar()函数