C语言 gets()和scanf()函数的区别
2015-11-19 00:00
127 查看
scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别。若想从键盘上输入字符串"hi hello",则应该使用gets函数。
gets可以接收空格;而scanf遇到空格、回车和Tab键都会认为输入结束,所有它不能接收空格。
char string[15]; gets(string); /遇到回车认为输入结束/
scanf("%s",string); /遇到空格认为输入结束/
所以在输入的字符串中包含空格时,应该使用gets输入。
scanf和gets获取字符串时的区别
在C语言中,能构获取字符串的函数至少有两个:
语法:scanf("格式控制字符串",变量地址列表);
接受字符串时:scanf("%s",字符数组名或指针);
语法:gets(字符数组名或指针);
而gets能够接受空格、制表符Tab和回车等;
例1:
引入头文件#include <stdio.h>
依次键入asd空格fg回车,asd空格fg回车,则ch1="asd\0",ch2="asd fg\0"。
例2:
引入头文件#include <stdio.h>
依次键入asdfg回车,asdfg回车,则ch1="asdfg\0",c1='\n',ch2="asdfg\0",c2需输入。
scanf :当遇到回车,空格和tab键会自动在字符串后面添加'\0',但是回车,空格和tab键仍会留在输入的缓冲区中。
gets:可接受回车键之前输入的所有字符,并用'\n'替代 '\0'.回车键不会留在输入缓冲区中
gets()用到读取字符串,用回车结束输入
scanf()可以读取所有类型的变量
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()可以读取所有类型的变量
相关文章推荐
- 第一个C函数
- C语言四书五经
- 【C语言】【面试题】【笔试题】模拟实现数据库中strcat函数
- 【C语言】【面试题】【笔试题】模拟实现数据库中strcpy函数
- 【C语言】【面试题】【笔试题】模拟实现数据库中memcpy函数
- 学习笔记5-C语言指针
- C语言:模拟实现strcpy
- 【笔试题】C语言:模拟实现strcat
- 【C语言】【面试题】【笔试题】模拟实现数据库中memmove函数
- 【笔试题】C语言:模拟实现strcmp
- ClustLib——A C++ Data Clustering Framework(一):数据集相关类设计
- C语言:模拟实现memcpy
- C语言:模拟实现memmove
- 数独游戏的简单回溯解法
- 免费赠与c/c++海量视频 学习资料的
- 一起talk C栗子吧(第六十三回:C语言实例--字符串查找)
- [MFC] CDialog::DoModal()函数用法
- c++顺序容器的学习
- 第一个 c++11多线程
- C++类中包含stl容器时,使用sizeof求大小的问题