百度
360搜索
搜狗搜索

gets函数和scanf区别,在c语言中,char a[100]; gets(a) 和scanf(%s,a);有什么不同?谢谢大家了!详细介绍

本文目录一览: c语言中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函数是输入一行字符串,以回车结束,并且回车键会被过滤掉,不会被读到字符串中。
getchar()是读取一个字符,包括回车键也会被读成一个字符。
这个程序在输入name[i]前,用getchar()把之前scanf("%d",&num[i]);中,输入整数后按的回车键给读走,否则这个回车键会导致gets直接读到一个空字符串。
gets()函数的话会连zhanghao后面的回车也当做字符输入了,对比的话肯定就是跟zhanghao不一样;

C语言中scanf()与gets()函数的区别,哪一个可以读入空格啊?

1.scanf不能接受空格、制表符Tab、回车等;对末尾回车符的处理:把回车符保留在缓存中。
gets能够接受空格、制表符Tab和回车等;对末尾回车符的处理:接收回车,但把回车替换为\0。
2.scanf :当遇到回车,空格和tab键会自动在字符串后面添加'\0',但是回车,空格和tab键仍会留在输入的缓冲区中。
gets:可接受回车键之前输入的所有字符,并用'\n'替代 '\0'.回车键不会留在输入缓冲区中
3.gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取,所以程序员应该确保buffer的空间足够大,以便在执行读操作时不发生溢出。scanf()可以读取所有类型的变量。
扩展资料:
注意问题
(1)在高版本的 Visual Studio 编译器中,scanf 被认为是不安全的,被弃用,应当使用scanf_s代替 scanf。
(2) 对于字符串数组或字符串指针变量,由于数组名可以转换为数组和指针变量名本身就是地址,因此使用scanf()函数时,不需要在它们前面加上"&"操作符。
(3) 可以在格式化字符串中的"%"各格式化规定符之间加入一个整数,表示任何读操作中的最大位数。
(4) scanf函数中没有类似printf的精度控制。
(5) scanf中要求给出变量地址,如给出变量名则会出错
(6) 在输入多个数值数据时,若格式控制串中没有非格式字符作输入数据之间的间隔,则可用空格,TAB或回车作间隔。
(7) 在输入字符数据(%c)时,若格式控制串中无非格式字符,则认为所有输入的字符均为有效字符。
参考资料:
百度百科-scanf
百度百科-gets

c语言,scanf%s和gets,不是没区别吗?

二者都是从终端读入字符串。
功能分别如下:
1、 gets功能为读入一行,并将换行符转换为字符串结束符。
2、 scanf("%s",s);读入时,遇到空白字符,包括空格,制表符,换行符时均会停止输入。
从功能上可以看出不同之处:
1 终止条件不同。gets只有遇到\n时才会结束输入,而scanf遇到空格或制表符时,也会结束输入。
比如输入"test string\n"。
用gets得到的字符串为"test string", 二用scanf得到的是"test"。
2 终止后,对终止字符处理不同。
比如输入为"test\nabcd"。
执行gets后,\n不会留在缓冲区中,即这时调用getchar得到的字符是'a'。
执行scanf后,\n会留在缓冲区,这时调用getchar得到的字符是'\n'。

c语言,我还是没闹明白scanf和gets有什么不同

gets函数仅用于读入字符串。
scanf为格式化输出函数,可以读入任意C语言基础类型的变量值,而不是仅限于字符串(char*)类型
gets函数固定的以换行符作为结尾,遇到换行符时结束输入。
scanf函数默认以空白函数结尾,同时可以对截止函数进行修改。
是的
scanf输入字符串时,遇到空格就终止,所以不能输入有空格的字符串.
gets输入字符串时,以回车结束,可以接收空格
差不多吧,说简单点就是如果用scanf,当你输入中有空白字符(空格,回车,制表符)时,scanf只能读入到这些符号之前的东西,后面的就等于舍弃了;而用gets,就可以把你输入之中的空白字符也读入。

C语言中gets和scanf的区别?

我忍不住说一下,
希望已经给出答案的同学们不要介意。
scanf("%s%f",
name[i],
&score);
如果你输入
“abc
1234”
(注意
引号不是输入的数据,只是为了方便阅读)
这个时候
name[i]会读取数据的,但是读取的数据遇到空格就视为读取结束。这样剩余下的数据就是
一个空格外加1234.
当score开始读取的时候,读到的第一个数据是一个空格,而不是希望的float类型的数据,因此整个缓冲区的流都乱了,所有的数据全部没有用处。
解决的办法就是在
%s与%f之间加上一个空格,就可以解决这个问题。
gets会将输入回车前所有输入的内容取出来,存放到一个字符数组,包括空格/tab,无论这些内容被空格/tab分成了几段,gets都会将这行输入完完整整的放到数组中,通俗点说就是gets会取一行,读到换行为止。
scanf是格式化输入,如果只使用最简单的格式化字符串%s,那么scanf只会取一个单词,在输入流中遇到空格/tab/换行,就会结束。比如输入流中有"aa
bb
cc"的话,那么执行scanf("%s",
s),s的值就会是aa,再次执行这句话,s的值就是bb,第三次就是cc。scanf会从输入流中取多少怎么取,取决于格式化字符串,也就是scanf的第一个参数;而gets则肯定会取出完整的一行。也就是说在scanf中,换行符等同于空格/tab,但gets中,换行符为读取结束标志。
还有就是gets取出来的肯定是字符串,如果需要转其他类型,则需程序中手动判断;而sacnf就不一定了。

putsgets 和 scanfprintf 用法上的区别...

一、调用形式不同
gets()函数实现字符串的输入,其调用形式为:gets(字符数组);
调用puts()函数实现字符串的输出,其调用形式为:puts(字符数组);
二、格式
scanf语句的一般格式如下:
scanf("格式字符串", 地址,?);
printf语句的一般形式如下:
printf( "格式字符串", 表达式, ... );
该语句将"表达式"按照"格式字符串"给定的格式,显示在屏幕上。"格式字符串"包括文本字符、转义字符和格式说明符。
三、结束方式
使用scanf("%s",?&s)函数输入字符串时存在一个问题,?就是如果输入了空格会认为输入字符串结束,空格后的字符将作为下一个输入项处理,?但gets()?函数将接收输入的整个字符串直到回车为止。?

在c语言中,char a[100]; gets(a) 和scanf(%s,a);有什么不同?谢谢大家了!

区别很大:gets输出字符串要到回车为止,而scanf遇到空格就返回的。
补充:贴出你的程序,不可能发生这样的情况吧。
在c语言中,char a[100];定义的是一个字符数组
gets(a);scanf("%s",a);都可以从键盘直接输入字符串,与回车符结束,但gets(a) 算了字符串结束符'\0',所以实际输入的只有99个字符。
而scanf("%s",a);没有。

c语言中,输入一个字符串使用scanf(”%s”)和gets()有什么区别

scanf函数只能输入不带空格的字符串,因为它读入到空格时就结束了。而gets函数可以读入带空格的字符串。例如:
#include

int main()

{

char s[100];

scanf("%s",s);

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

gets(s);

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

return 0;

}

两次输入,都输入字符串"ab cd",输出却不一样:第一次输出ab,因为scanf遇到空格时停止读入,第二次输出ab cd,因为gets函数是以换行符为结束标志的。

%s遇到空格就停止读入了,gets是遇到回车是才停止读入,gets能获取空格,%s不能

%s遇空格或回车停止,gets遇回车才停

其实用scanf("%s",);和gets();本质上没有什么区别,都是将字符数据输入到制定的内存单元中。

假设定义有字符数组(C语言把字符串按字符数组处理)str[30],那么我们向里面输入字符就可以为:

scanf("%s",str);

gets(str);

他们都可以这样输出:

printf("%s",str);

或者puts(str);

注意:

(1)使用scanf输入字符串一定不能写成“scanf("%s",&str);”,因为str是数组名,作为一个地址存在,是不能再进行“&”运算的。

(2)gets();和puts();一次只能输入一个字符数组,比如写成“gets(str1,str2);”而想一次输入两个字符串,那是不行的。

在整体输入输出字符数组时,scanf()函数与gets()函数有什么区别呢?

scanf()遇到空白字符(空格、制表符、回车等)就会停止,gets()只有碰到回车才会停止。
首先这两个函数都是输入函数,输出函数另外是printf()和puts();
scanf()是格式输出函数 ,对它输入字符型数组时,格式为scanf("%s",str);注意这里的str没有地址符&,因为格式控制符%s在格式输出和输入函数中,都有要求字符串的首地址作为输入和输出项,我们知道,字符数组名就是存放字符数组的首地址,其中,scanf()输入字符串数组的时候,不能有空格,因为%s遇到空格或者制表符就会认为输入结束;举例说明:你输入“河南 小老丁”,这个时候会输出“河南”。
为解决格式输入函数的弊端,专门有用于字符串的输入输出函数,即gets(),,puts();
gets(),已经介绍,不多赘述,他与格式输入函数的区别就是,他认为回车为输入结束,,上个例子中,他的输出就是“河南 小老丁”,谔谔 哥们 好好学c啊,很有用的,,,明白了吗??

阅读更多 >>>  判断素数的c语言程序,如何编写一个C语言程序判断一个数是否是素数?

网站数据信息

"gets函数和scanf区别,在c语言中,char a[100]; gets(a) 和scanf(%s,a);有什么不同?谢谢大家了!"浏览人数已经达到20次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:gets函数和scanf区别,在c语言中,char a[100]; gets(a) 和scanf(%s,a);有什么不同?谢谢大家了!的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!