c语言中gets函数和是scanf函数有什么区别呢??

作者&投稿:铎很 (若有异议请与网页底部的电邮联系)
有人能告诉我一下C语言中gets函数和scanf函数的区别吗~

char *gets(char *)
从标准输入读取字节流,遇到换行符或文件结束符终止。
例 char a[64];
gets( a );
那么会将读到的字符串保存到a字符数组中,使用的时候有数组越界的危险,要使接收输入的字符数组足够大。
int scanf ( Format [, Pointer, ... ])
根据给定的格式从标准输入读取数据。
例 scanf( "%64s", a ); 从标准输入最多读取64个字符的字符串放到a数组中。比较安全。也可以按照格式,读取整数、浮点数等类型。

原因出在输出语句上
,【20】元素的数组,下标最大是19
输出字符串只需要数组名或者首地址即可。
他们的区别是
scanf以空格结束输入。gets以回车结束输入

一、指代不同

1、scanf:是C语言中的一个输入函数。

2、gets:从标准输入设备读字符串函数。

二、读取方式不同

1、scanf:是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中。

2、gets:可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。


三、数据流向不同

1、scanf:函数 scanf() 是从标准输入流stdin  (标准输入设备,指向键盘)中读内容的通用子程序,可以说明的格式读入多个字符,并保存在对应地址的变量中。

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


参考资料来源:百度百科-gets

参考资料来源:百度百科-scanf



都是从输入流中读取数据,但功能有很大差别:
1 操作类型不同。
gets函数仅用于读入字符串。
scanf为格式化输出函数,可以读入任意C语言基础类型的变量值,而不是仅限于字符串(char*)类型。

2 截止字符不同。
gets函数固定的以换行符作为结尾,遇到换行符时结束输入。

scanf函数默认以空白函数结尾,同时可以对截止函数进行修改。

3 对截止字符处理不同。
gets函数会读入截止字符\n, 同时将\n自动替换为\0.
scanf遇到截止字符时不会继续读取,截止字符将存储于输入缓冲中。

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

gets函数和scanf函数都可以作为字符串的输入函数,
相同点:都是将从键盘输入的字符串存入数组中,输入完成后要以回车来结束输入。
不同点:利用sanf时,在输入过程中碰到空格时系统认为输入结束,并将空格之前的字符作为有效字符存入数组中,并在尾部追加\0作为结束标志。利用gets时,空格符被看作是有效字符,也就是说只有碰到回车符时系统才认为输入结束。

是不是这代码前面还有什么输入语句,反正在我电脑上运行结果一样.
gets与scanf的区别是gets一次读一行,scanf遇到空格回车结束!

gets()函数的话会连zhanghao后面的回车也当做字符输入了,对比的话肯定就是跟zhanghao不一样;


c语言中两行输入怎么实现
可以使用两个gets函数,实现两行输入。1、gets函数:原型:char * gets(char * buffer);功能:从stdin流中读取字符串,直至读到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为 \\0 空字符,并以此结束字符串;说明:当使用...

关于gets函数
关于gets函数:存在安全隐患,不推荐使用。推荐使用fgets函数代替。gets函数是一个用于从标准输入流读取字符串的函数。它会读取一行输入,并将其存储在指定的字符数组中。然而,由于gets函数在处理输入时没有进行任何边界检查,因此存在缓冲区溢出的安全隐患。当输入的字符串长度超过目标数组所能容纳的最大长...

c语言中gets ,getschar 和fgets 的用法及三者之间的差别
gets用于输入一串字符,可以输入空格,输入完毕gets会自动给输入的字符串后面补'\\0';头文件string.h。getchar用于输入单个字符,单句getchar()还有清空输入缓存的作用。头文件stdio.h。fgets用于从文件中读取一串字符,读取到的个数由传入参数决定,另外fgets读取的时候遇到'\\n'也会停止。头文件stdio.h。

C语言中如何接收输入字符串中的空格?
C语言中,可以用gets函数来接收输入的字符串(包含空格)。格式:gets(字符数组名);功能:gets函数用于将输入的字符串内容存放到指定的字符数组中,输入结尾的换行符'\\n'被换成'\\0'存储在该数组中。举例说明如下:char str[20]; \/\/ 定义一个字符数组,大小为20个字节gets(str); \/\/ 将用户...

关于gets函数
gets函数,可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。gets是从stdin流中读取字符串,直至接受到换行符或EOF时停止,并将读取的结果存放在buffer指针所指向的字符数组中。换行符不作为读取串的内容,读取的换行符被转换为null值,并...

C语言中scanf()与gets()函数的区别,哪一个可以读入空格啊?
2.scanf :当遇到回车,空格和tab键会自动在字符串后面添加'\\0',但是回车,空格和tab键仍会留在输入的缓冲区中。gets:可接受回车键之前输入的所有字符,并用'\\n'替代 '\\0'.回车键不会留在输入缓冲区中 3.gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取,所以...

C语言getchar()和gets()的用法
C语言getchar()和gets()的用法:1、gets读一行,getchar()读一个字符。2、函数用法:1)gets()用于从标准输入流stdin读入一个整行(以'\\n'或EOF)结束,写入ptr指向的字符数组,并返回这个指针;出错或遇到文件结束时则返回NULL。行末的'\\n'从流中取出,但不写入数组。gets()不检查被写入的...

C语言中gets()函数和getchar()函数什么区别 ?在这个程序段中,有什么用...
区别:1、gets读一行,getchar()读一个字符。函数原型:char * gets(char * ptr);int getchar(void);2、函数用法:1)gets()用于从标准输入流stdin读入一个整行(以'\\n'或EOF)结束,写入ptr指向的字符数组,并返回这个指针;出错或遇到文件结束时则返回NULL。行末的'\\n'从流中取出,但不写入...

c语言中,gets()和puts()函数与getchar()与putchar()函数有何区别
s)相同。gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束,但回车符不属于这个字符串。其调用格式为:gets(s);s为字符串变量(字符串数组名或字符串指针)。gets(s)函数与scanf("%s",&s)相似,但不完全相同,使用scanf("%s",&s)函数输入字符串时存在一个问题,就是如果输入了空格会认为...

cgets函数简介
在C语言编程中,有一个名为cgets的函数,虽然在VC++6.0环境下可能被替换为_cgets,但其核心功能保持一致。这个函数的主要作用是帮助程序从用户的键盘获取一个字符串输入。它的基本用法是通过char类型的指针buffer来接收输入的字符串。该函数的实现是依赖于conio.h库,这是一个标准的C库,提供了许多与...

南安市17839443833: c语言中gets函数和是scanf函数有什么区别呢?? -
柘巩依利: 一、指代不同 1、scanf:是C语言中的一个输入函数. 2、gets:从标准输入设备读字符串函数. 二、读取方式不同 1、scanf:是格式输入函数,即按用户指定的格式从键盘上把数据输入到指定的变量之中. 2、gets:可以无限读取,不会判断...

南安市17839443833: c语言中,输入一个字符串使用scanf(”%s”)和gets()有什么区别 -
柘巩依利: 其实用scanf("%s",);和gets();本质上没有什么区别,都是将字符数据输入到制定的内存单元中. 假设定义有字符数组(C语言把字符串按字符数组处理)str[30],那么我们向里面输入字符就可以为: scanf("%s",str); gets(str); 他们都...

南安市17839443833: C语言中gets和scanf的区别? -
柘巩依利: scanf()语句不允许在输入中存在空白字符(也就是在scanf()语句中不能打空格.)给你举个例子吧:当用scanf()接收字符串时,键入“Pan Wei Bo”后,只有“Pan”会被存储在内存中,而空格字...

南安市17839443833: C语言中,,,输入字符串用gets和用循环结构然后加scanf输入,,有什么区别,好像会出现一个不能识别空格 -
柘巩依利: 代表输入结束 gets()是用来输入字符串的,应该也是以回车代表输入结束 scanf()是什么都可以输入,scanf()是以回车代表输入结束 scanf()中会用到空格 是用作分隔符的 因为scanf()可以输入多个变量,如 canf("%d%d",&a,&b);//表示输入两个整形的数分别赋给变量a、b 在输入另个数时用空格间隔开 但如果canf("%d,%d",&a,&b);//如果两个%d中间用逗号间隔,那么输入时也必须用逗号作为两个数间隔.希望你可以理解 另外,虚机团上产品团购,超级便宜

南安市17839443833: C语言中gets和scanf的区别? -
柘巩依利: char *gets(char *) 从标准输入读取字节流,遇到换行符或文件结束符终止. 例 char a[64]; gets( a ); 那么会将读到的字符串保存到a字符数组中,使用的时候有数组越界的危险,要使接收输入的字符数组足够大. int scanf ( Format [, Pointer, ... ]) 根据给定的格式从标准输入读取数据. 例 scanf( "%64s", a ); 从标准输入最多读取64个字符的字符串放到a数组中.比较安全.也可以按照格式,读取整数、浮点数等类型.

南安市17839443833: 有人能告诉我一下C语言中gets函数和scanf函数的区别吗 -
柘巩依利: 说的直接点,就是,scanf度字符串时,遇到空格或者回车就会输入结束,而gets,则是可以读空格,遇到回车时,输入才结束

南安市17839443833: C语言 gets和scanf函数的区别 -
柘巩依利: gets接收带空格的字符串,且只能接收字符串, scanf不能接收带空格的字符串

南安市17839443833: c语言scanf函数和gets()区别,问题如图
柘巩依利: 原因出在输出语句上 ,【20】元素的数组,下标最大是19 输出字符串只需要数组名或者首地址即可. 他们的区别是 scanf以空格结束输入.gets以回车结束输入

南安市17839443833: C语言字符输入函数scanf和gets有何不同
柘巩依利: 可以用如下两种方式输入字符串,示例程序段如下: char string[15]; gets(string); /*遇到回车认为输入结束*/ scanf("%s",string); /*遇到空格认为输入结束*/ ... 所以在输入的字符串中包含空格时,应该使用gets输入.

南安市17839443833: C语言中 gets()和scanf 以及puts()和printf 的区别. -
柘巩依利: gets()是从屏幕读取一个字符不遇到结束就一直读,这个已经都不用了因为它存在缓冲区溢出漏洞 scanf()则是输入,输入什么要看格式声明例如%d就是整数. printf()输出,输出什么要看格式声明

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网