scanf函数与gets函数

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

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

char string[15];
gets(string); /*遇到回车认为输入结束*/
scanf("%s",string); /*遇到空格认为输入结束*/

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

scanfgets的区别

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

1.scanf()

所在头文件:stdio.h

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

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

2.gets()

所在头文件:stdio.h

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

两者在接受字符串时:

1.不同点:

scanf不能接受空格、制表符Tab、回车等;

gets能够接受空格、制表符Tab和回车等;

2.相同点:

字符串接受结束后自动加'\0'。

例1:

#include <stdio.h>
int main(){
char ch1[10],ch2[10];
scanf("%s",ch1);
gets(ch2);
return 0;
}

依次键入asd空格fg回车,asd空格fg回车,则ch1="asd\0",ch2="asd fg\0"。

例2:

#include <stdio.h>
int main(){
char ch1[10],ch2[10],c1,c2;
scanf("%s",ch1);
c1=getchar();
gets(ch2);
c2=getchar();
return 0;
}

依次键入asdfg回车,asdfg回车,则ch1="asdfg\0",c1='\n',ch2="asdfg\0",c2需输入。

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

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

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

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

    推荐阅读

  1. gets函数功能、原型、用法及实例
  2. scanf函数功能、原型、用法及实例

(本文来源于互联网,若有侵权,请联系博主)

【C语言】gets()和scanf()函数的区别的更多相关文章

  1. C语言中关于scanf函数的用法

    scanf()函数的控制串 函数名: scanf 功 能: 执行格式化输入 用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化 ...

  2. C语言基础之scanf函数的使用

    0.自己实际遇到的坑 Mac下如果用标准键盘,使用scanf输入时不能用小键盘上的回车,否则系统不能很好的识别. 1.scanf函数的基本使用 1: // 定义一个变量,用来保存用户输入的整数 2: ...

  3. C语言gets雨scanf函数的用法

    /*1.不同点: scanf不能接受空格.制表符Tab.回车等: 而gets能够接受空格.制表符Tab和回车等: 2.相同点:  字符串接受结束后自动加'\0'. 使用scanf("%s&q ...

  4. R语言 sub与gsub函数的区别

    > text <- c("we are the world", "we are the children") > sub("w&qu ...

  5. C语言 scanf()和gets()函数的区别

    C语言 scanf()和gets()函数的区别 1.相同点:scanf( )函数和gets( )函数都可用于输入字符串 2.不同点:两者在功能上有所区别,具体区别如下: 要实现如下需求“从控制台输入字 ...

  6. C语言 gets()和scanf()函数的区别

    scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别.若想从键盘上输入字符串"hi hello",则应该使用 gets 函数. gets可以接收空格:而sc ...

  7. [转]C语言 gets()和scanf()函数的区别

    scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别.若想从键盘上输入字符串"hi hello",则应该使用__gets__函数. gets可以接收空格:而 ...

  8. 黑马程序员——C语言基础 scanf函数 基本运算 三目运算符

    Java培训.Android培训.iOS培训..Net培训.期待与您交流! (一下内容是对黑马苹果入学视频的个人知识点总结) (一)scanf函数 1>  简单介绍一下scanf函数   这是在 ...

  9. C语言scanf函数详解

    函数名: scanf  功 能: 运行格式化输入  用 法: int scanf(char *format[,argument,...]); scanf()函数是通用终端格式化输入函数,它从标准输入设 ...

随机推荐

  1. VS编辑器主题变换插件-EasyVS

    主题功能是这个版本的亮点. 我收集了七个比较流行的编辑器主题样式,有了这个功能再也不用到网上寻找安装这样那样的主题了. 增加文件右键“在资源管理器中打开”功能 我们知道VS2010对文件夹支持“在资源 ...

  2. Spark源码分析之Spark Shell(下)

    继上次的Spark-shell脚本源码分析,还剩下后面半段.由于上次涉及了不少shell的基本内容,因此就把trap和stty放在这篇来讲述. 上篇回顾:Spark源码分析之Spark Shell(上 ...

  3. Padding Borders Outlines Margins

    简介: 在20世纪90年代,许多网页布局是使用table,使用table最主要的原因是因为可以放text到一个盒子里,但是这是一个比较复杂的过程,现在可以使用比较简单的方法,那就是css. 元素盒子: ...

  4. [转]ios 数据的传递

    情景1: A-->B  需要把数据传递到B里 代码: // 跳转 -- 执行login2contacts这个segue [self performSegueWithIdentifier:@&qu ...

  5. sicily 1063. Who's the Boss 排序+递推

    #include <cstdio> #include <algorithm> using namespace std; struct Emp{ int id, salary, ...

  6. 每天一个Linux命令(13)--less命令

    less 工具也是对文件或其它输出进行分页显示的工具,应该说是Linux正统馋看文件内容的工具,功能极其强大.less 的用法比起  more 更加有弹性.  在 more 的时候,我们没有办法向前面 ...

  7. apk反编译方式

    一.Apk反编译得到Java源代码 下载上述反编译工具包,打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译成java源码工具,以及源码查看工具. apk反编译工具de ...

  8. Cloud9vue&vux上传github小步骤

    成功后创建出以下文件,再输入: git init 再输入:$ git remote add origin https://github.com/github用户名/vux1 然后:git add. 按 ...

  9. dll

    dll可以有一个入口点函数,系统会在不同的时候调用这个入口函数.这个调用是通知性质的,通常被dll用来执行一些与进程或线程有关的初始化和清理工作如果将dll的入口点函数命名为DllMain之外的其他名 ...

  10. 1726: [Usaco2006 Nov]Roadblocks第二短路

    1726: [Usaco2006 Nov]Roadblocks第二短路 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 835  Solved: 398[S ...