精华内容
下载资源
问答
  • gets和scanf区别 千次阅读 多人点赞
    2020-11-21 11:28:00

    #gets和scanf都是可以在C语言中用于读取字符串的,但是它们实际上也有很大的不同,本篇文章我们就来看一下gets和scanf之间有什么区别。

    gets和scanf的区别

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

    例如:如果输入为"hello world"时,上面程序的运行结果是"hello world"。而如果用scanf则只能输出hello

    2、scanf 对末尾回车符的处理:把回车符保留在缓存中。gets对末尾回车符的处理:接收回车,但把回车替换为\0.**

    3、gets的返回值为char*型,当读入成功时会返回输入的字符串指针地址,出错时返回NULL;scanf返回值为int型,返回实际成功赋值的变量个数,当遇到文件结尾标识时返回EOF。

    4、gets函数仅用于读入字符串;scanf为格式化输出函数,可以读入任意C语言基础类型的变量值,而不是仅限于字符串(char*)类型。

    更多相关内容
  • gets scanf 区别

    2021-05-22 07:35:29
    在C语言中,scanf和gets这两个函数进行输入。gets的输入分割符只有回车,gets是能够读入空格的,但是scanf不能。在 C 语言中,主要用 scanf gets 这两个函数(在 stdio.h 文件中)进行输入。 gets 函数 scanf ...

    在C语言中,scanf和gets这两个函数进行输入。gets的输入分割符只有回车,gets是能够读入空格的,但是scanf不能。

    在 C 语言中,主要用 scanf 和 gets 这两个函数(在 stdio.h 文件中)进行输入。 gets 函数和 scanf 函数都可以作为字符串的输入函数,相同点都是将从键盘输入的字符串存入数组中,输入完成后要以回车来结束输入。

    6d359c7ec594b6b737e4f55169ff157b.png

    不同点则是利用 sanf 时,在输入过程中碰到空格时系统认为输入结束,并将空格之前的字符作为有效字符存入数组中,并在尾部追加\0 作为结束标志。利用 gets 时,空格符被看作是有效字符,也就是说只有碰到回车符时系统才认为输入结束。

    gets 与 scanf 输入字符串的方式也非常类似,但是有几个区别:

    (1) gets 的输入分割符只有回车,因此 gets 是能够读入空格的。如果输入为”hello world”时,上面程序的运行结果是”hello world”。而如果用 scanf 则只能输出 hello

    (2) 此外,scanf 和 gets 对待缓冲区里的回车符也是完全不同的。scanf 在读取非空白符之前会忽略回车,读取之后如果遇到回车会停止输入,将其留着缓冲区里;gets 只要一遇到回车就输入结束,并把这个回车从缓冲区里移走。

    (3) gets 可以读取空回车,但是 scanf 不能。

    gets 从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保 buffer 的空间足够大,以便在执行读操作时不发生溢出。

    展开全文
  • Gets和scanf区别

    万次阅读 多人点赞 2018-09-15 15:26:42
    转载自:Gets和scanf区别 char s[20]; gets(s); puts(s); getsscanf输入字符串的方式也非常类似,但是有几个区别: (1) gets的输入分割符只有回车,因此gets是能够读入空格的。如果输入为"hello world"时,...

     

    char s[20]; gets(s); puts(s);

    gets与scanf输入字符串的方式也非常类似,但是有几个区别:

    (1) gets的输入分割符只有回车,因此gets是能够读入空格的。如果输入为"hello world"时,上面程序的运行结果是"hello world"。而如果用scanf则只能输出hello

    (2) 此外,scanf和gets对待缓冲区里的回车符也是完全不同的。scanf在读取非空白符之前会忽略回车,读取之后如果遇到空白字符会停止输入,将其留着缓冲区里;gets只要一遇到回车就输入结束,并把这个回车从缓冲区里移走。

    (3) gets可以读取空回车,但是scanf不能。

    例如输入为"\nhello\n",也就是说,先输入一个空行,然后在第二行输入"hello"并回车。scanf按照它的读取原理,把第一个’\n’作为空白符忽略掉,然后读取字符串"hello",遇到第二个’\n’时输入结束,但是第二个’\n’会被scanf残留在缓冲区里。scanf的输入结果是读入字符串"hello"。当用gets进行读取时,它遇到第一个’\n’,就找到了它的输入分隔符,停止继续输入,第一个’\n’被从缓冲区中读走了,缓冲区里剩下"

    gets从标准输入设备读字符串函数。可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。

     

    #include <stdio.h>
    
     
    int main(){
    
    char ch[100] ;
    
    gets(ch);
    	for (int i = 0; i < 100; i++)
    	{
    		
    		printf("%d  ",ch[i]);
    	}
    	
    	return 0;
    }

    char ch[100] ;
    
    scanf("%s",ch);
    	for (int i = 0; i < 100; i++)
    	{
    		
    		printf("%c  ",ch[i]);
    	}
    	

    scanf("%s",ch);只把11读了进来,并且把空白字符都残留在了缓冲区。

     

    scanf(" %s",ch);可以吧之前残留的空白子字符读走。

    getchar可以读走一个残留的空白字符,scanf(" ");可以都走之前最后一个非空白字符后的全部空白字符。

    转载自:https://blog.csdn.net/wordwarwordwar/article/details/52579503

    功能

    编辑

    从stdio流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为‘\0’空字符,并由此来结束字符串。

    返回值

    编辑

    读入成功,返回与参数buffer相同的指针;读入过程中遇到EOF(End-of-File)或发生错误,返回NULL指针。所以在遇到返回值为NULL的情况,要用ferrorfeof函数检查是发生错误还是遇到EOF。

    注意

    编辑

    本函数可以无限读取,不会判断上限,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。如果溢出,多出来的字符将被写入到堆栈中,这就覆盖了堆栈原先的内容,破坏一个或多个不相关变量的值。这个事实导致gets函数只适用于玩具程序,为了避免这种情况,我们可以用fgets(stdin) (fgets实际上可以读取标准输入(即大多数情况下的键盘输入),具体参阅fgets词条)来替换gets()。在V7的手册(1979年)中说明:为了向后兼容,gets删除换行符,gets并不将换行符存入缓冲区

    由于可以无限读取,所以在2011年12月,ANSI 采纳了 ISO/IEC 9899:2011 标准,标准中删除了 gets()函数,使用一个新的更安全的函数gets_s()替代(具体用法看下面示例)。

    示例

    编辑

    C:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    #include <stdio.h>    //这个头文件包含gets()函数,这个函数在ISO/IEC 9899 2011(C11)标准中被移除

    int main(void)

    {

        char str1[5];  //不要char*p,然后gets(p),这是错误的,因为p没有指向有效的内存,它可能指向任何非法地址                   //     地方的未知大小的内存块,这样以来,就可能修改了不属于本程序的内存的内容

        gets(str1);

        printf("%s\n", str1);

        return 0;

    }

     

    #include <stdio.h>//gets_s()用法

    #define CH 20

    int main(void)

    {

        char ch[CH];

        printf("请输入你的名字:\n");

        gets_s(ch,CH);             //这里不能用gets_s(ch);

        printf("这是你的名字:%s\n", ch);

        return 0;

    }

    C++:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    #include <iostream>

    #include <cstdio>

    using namespace std;

    int main()

    {

        char str[100];

        gets(str);

        cout<<str<<endl;

        return 0;

    }

    gets()函数用来从标准输入设备(键盘)读取字符串直到换行符结束,但换行符会被丢弃,然后在末尾添加'\0'字符。其调用格式为:

    gets(s);

    其中s为字符串变量(字符串数组名或字符串指针)。

    gets(s)函数与scanf("%s",s)相似,但不完全相同,使用scanf("%s",s) 函数输入字符串时存在一个问题,就是如果输入了空格会认为字符串结束,空格后的字符将作为下一个输入项处理,但gets()函数将接收输入的整个字符串直到遇到换行为止。

    也就是说:gets()函数读取到\n(我们输入的回车)于是停止读取,但是它不会把\n包含到字符串里面去。然而,和它配合使用的puts函数,却在输出字符串的时候自动换行。

    说明

    编辑

    gets(s) 函数中的变量s为一字符串指针。如果为单个字符指针,编译连接不会有错误,但运行后内存溢出错误。

    宽字符版本,当使用unicode宽字符文本时,使用这个函数 _getws();

    在C11标准中被删除,可用C标准库中的fgets代替.

     

     

    大数据 开发月薪35K+!可是,多数程序员会学吗?

    大数据技术与运用的成熟,应用集中于互联网、金融、医疗、新能源、通信和房地产等行业。整理平均薪资情况和大数据学习大纲供查看

    hello\n"。gets的输入结果是一个空串,即一个首字符是’\0’的字符串。

    展开全文
  • gets和scanf有什么区别

    2021-05-21 07:15:46
    gets和scanf都是可以在C语言中用于读取字符串的,但是它们实际上也有很大的不同,本篇文章我们就来看一下gets和scanf之间有什么区别gets和scanf区别1、 gets可以接收空格;而scanf遇到空格、回车Tab键都会认为...

    ac0b31cfb020182f3219f344b81b6b91.png

    gets和scanf都是可以在C语言中用于读取字符串的,但是它们实际上也有很大的不同,本篇文章我们就来看一下gets和scanf之间有什么区别。

    gets和scanf的区别

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

    例如:如果输入为"hello world"时,上面程序的运行结果是"hello world"。而如果用scanf则只能输出hello

    2、scanf对末尾回车符的处理:把回车符保留在缓存中。gets对末尾回车符的处理:接收回车,但把回车替换为\0.

    3、gets的返回值为char*型,当读入成功时会返回输入的字符串指针地址,出错时返回NULL;scanf返回值为int型,返回实际成功赋值的变量个数,当遇到文件结尾标识时返回EOF。

    4、gets函数仅用于读入字符串;scanf为格式化输出函数,可以读入任意C语言基础类型的变量值,而不是仅限于字符串(char*)类型。

    展开全文
  • gets和scanf区别

    2020-01-28 21:25:18
  • scanf,getchar和gets的用法和区别

    千次阅读 多人点赞 2020-03-18 22:28:20
    相信很多新手朋友都在scanf,getchar和gets的使用上产生过困惑,尤其是处理字符字符串时,博主先前就遇到这样的困惑,但一直都是一知半解,今天终于经过一番折腾弄清了它们的用法和区别,下面我们就详细来看看。...
  • gets和scanf混用问题

    千次阅读 多人点赞 2020-02-25 22:48:21
    1.gets和scanf区别 gets可以读入字符串空格,遇见回车才停止 scanf遇见空格或回车都停止读入 2. scanf("%d\n",&a); 此时输入数据时需要多输入一行,但只读第一行数据,因为scanf("%d\n",&n);这样一条...
  • C语言 scanf()和gets()函数的区别1.相同点:scanf( )函数和gets( )函数都可用于输入字符串2.不同点:两者在功能上有所区别,具体区别如下:要实现如下需求“从控制台输入字符串”有如下两种实现方式:1>使用gets()...
  • gets() gets函数是输入一行字符串,以回车结束,并且回车键会被过滤掉,不会被读到字符串中。 getchar() getchar()是读取一个字符,包括回车键也会被读成一个字符。 scanf() scanf 的功能是通过键盘给程序中的变量...
  • scanf函数和gets( )函数都可用于输入字符串,但在功能上有区别。若想从键盘上输入字符串"hi hello",则应该使用gets函数。gets可以接收空格;而scanf遇到空格、回车Tab键都会认为输入结束,所有它不能接收空格。...
  • scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别。若想从键盘上输入字符串"hi hello",则应该使用__gets__函数。 gets可以接收空格;而scanf遇到空格、回车Tab键都会认为输入结束,...
  • getsscanf()最大的区别gets()输入的字符串中可以有空格,scanf()不能有 gets(字符数组) gets(a); 从终端输入一个字符串到数组a中,可接受回车键之前所有的字符 scanf("%s",字符数组) scanf("%s",a); 从终端输入...
  • 关于gets和scanf的使用(C语言)
  • 【C】gets和scanf区别

    2019-07-10 12:41:09
    3.scanfgets函数读取字符串的区别 1.scanf() 会忽略行开头的所有空格,并以空格、换行符结束输入;  使用getchar()读取scanf语句执行后,缓冲区留下的换行符,  gets读入以任何字符开始的字符串,以换行符结束,...
  • C语言中gets(), scanf()区别 相同点: gets() scanf() 1、函数都可用于输入字符串 2、都在stdio.h头文件中定义。 3、字符串接受字符结束后自动加'\0' 不同点: 1、gets() 可以接受space,Tab等键盘输入,...
  • 进击的小白——知识点:scanf与getchar、gets区别

    千次阅读 多人点赞 2019-03-18 16:08:01
    scanf
  • 之前scanf的时候,会遗留一个’\n’在缓冲区里, 因此,gets()误将这个回车作为了它的输入。 应在gets函数之前使用,fflush(stdin);清空默认缓冲区 (使用stdin,不是自己定义的gets(a)数组的数组a) ...
  • gets和scanf输入字符串的区别在于,gets输入字符串遇到空格、制表符都会保留输出,但是scanf不会。 gets测试: #include <stdio.h> #include <string.h> int main() { char s[100]; int c, i; //...
  • scanf、getchar和gets区别

    千次阅读 2016-11-27 17:00:27
    一、scanf函数作用:按照变量在内存的地址将变量值存进去。 一般格式:scanf(格式控制,地址表列) 其中,格式控制: %d:以带符号的十进制形式输出整数 %o:以八进制无符号形式输出整数 %x:以十六进制无符号...
  • scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别。若想从键盘上输入字符串hi hello,则应该使用__gets__函数。  gets可以接收空格;而scanf遇到空格、回车Tab键都会认为输入结束,所有它不能...
  • 在C语言中,scanf()函数和gets()函数都可用于输入字符串,但是也有很多区别。 主要区别如下: gets()的输入分隔符只有回车,因此gets能够读入空格。如果使用gets()输入"Hello World",运行之后的结果是"Hello World...
  • 今天小编就为大家分享一篇c语言获取用户输入字符串是scanf和gets区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • C语言中scanf和gets

    2022-03-16 14:39:02
    目录scanf()的说明使用gets()的说明使用scanf("%s")和gets()的区别关于~EOF scanf()的说明使用 scanf(完成函数为int scanf(const char *format, …))属于库函数<stdio.h>,函数从标准输入流 stdin ...
  • gets()从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并由此来结束字符串。   注意:...
  • C语言 gets()和scanf()函数的区别 scanf( )函数和gets( )函数都可用于输入字符串,但在功能上有区别。若想从键盘上输入字符串"hi hello",则应该使用__gets__函数。 gets可以接收空格;而scanf遇到空格、回车...
  • gets和scanf函数区别

    2020-12-21 15:42:51
    scanf :当遇到回车,空格tab键会自动在字符串后面添加’\0’,回车,空格tab键仍会留在输入的缓冲区中。 gets:可接受回车键之前输入的所有字符,并用’\0’替代 ‘\n’.回车键不会留在输入缓冲区中。 # ...
  • gets(s)函数与scanf("%s", &s)相似, 但不完全相同, 使用 scanf("%s", &s)函数输入字符串时存在一个问题, 就是如果输入了空格会认为输入字符串结束,空格后的字符将作为下一个输入项处理, 但gets() 函数将接收输入的...
  • gets和scanf()

    2019-03-20 11:03:16
    gets()函数用来从标准输入设备... gets(s)函数与scanf("%s", s)相似, 但不完全相同, 使用scanf("%s", s) 函数输入字符串时存在一个问题, 就是如果输入了空格会认为输入字符串结束, 空格后的字符将作为下一个输入...
  • 在输入输出字符串时scanf(),printf()和gets(),puts()的区别浅谈,需要的朋友可以参考一下
  • scanf和gets的用法和区别

    千次阅读 多人点赞 2017-11-28 10:34:04
    scanf和gets的用法: 在C语言中,我们主要用scanf和gets这两个函数(在stdio.h文件中)进行输入。 首先来介绍下scanf函数: scanf在C语言中能对各种类型进行输入,同时也能对字符串输入。 格式如下: 输入整型...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 68,666
精华内容 27,466
关键字:

gets和scanf的区别