请问在C语言中 gets scanf getchar是等价的吗

请问在C语言中 gets scanf getchar是等价的吗
gets(s) scanf ("%d",&s) s=getchar()

这三个函数除了用法上有区别,其他都一样吗?特别是第一个和第三个,都是从键盘上读取,基本都差不多,为什么C语言要分别存在这两种函数呢?
1.scanf("%s",s),输入字符串应该用%s的格式,逗号后面镇胡要用字符串地址,通常是字符串的名字,不需再加&号。
这个函数与gets的区别有两个:
第一,从键盘输入的时候遇到空字此旅物符(空格、TAB、回车)就会停止读入,例如输入:Hello word! ,s串的内容是:Hello。
第二,使用scanf可以一次输入多个字符串,如scanf("%s%s%s",s1,s2,s3),从键盘输入时一行代表一个字符串。
2.gets(s)一次只能输入一个字符串,但它可以接受空格和TAB做为字符串的有效字符,遇回车符终止接收。
3.getchar函数是字符函数,只能用来接受1个字符,可以用ch=getchar()来给char型变量ch赋于一个字符型的值。
这里须要注意的是C语言中字符变量与字符串的不同,字符变量用char来定义,占1个字节的内存,只能存放一个字符,字符常量是用单引森液号引起来的1个字符或者是转义字符。而字符串是指用双引号引起来的一串字符,C中没有字符串变量,字符串存储在字符型的一给数组中。
要注意不同的函数是否接受空格符、是否舍弃最后的回车符的问题!
读取字符时:
scanf()以Space、Enter、Tab结束一次输入,不会舍弃最后的回车符(即回车符会残留在缓冲区中);
getchar()以Enter结束输入,也不会舍弃最后的回车符族敏液;
读取字符串时:
scanf()以Space、Enter、Tab结束一次输入
gets()以Enter结束输入(空格兆物不结束),接受拿运空格,会舍弃最后的回车符!
gets 字符串中可以有空白符号,遇到回车终止输入。
scanf("%s")遇到第一个空白符号或者回车猜返停止输入
getchar()只读一个字符
例如输入abc 12345 89按回车
如果用gets(s)接镇兆樱收,字符数组s将保存abc 12345 89\0
而用scanf("御丛%s",s)接收,字符数组s将保存abc\0.
这说明gets遇到回车才停止接收,而scanf("%s")碰到空白符停止接收
← 上一篇: 下一篇: →