C语言中gets函数与getchar函数的区别
一、函数输入方面
1、gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束,但回车符不属于这个字符串。其调用格式为:gets(s);s为字符串变量(字符串数组名或字符串指针),gets(s)函数与scanf("%s", &s)相似,但不完全相同。
2、而getchar函数运行时字符是连续输入的,运行结果却是正确的,这是因为输入字符后,它们暂存于键盘的缓冲区中,然后由getchar函数从键盘缓冲区中一个一个的取出来。就是如果输入了空格会认为输入字符串结束,空格后的字符将作为下一个输入项处理,但gets() 函数将接收输入的整个字符串直到回车为止。
二、字符输入方面
1、gets()函数可以用于对字符串的输入,不需要将字符串拆分成一个一个的字符进行输入。
2、而getchar函数只能用于单个字符的输入,一次输入一个字符。程序的功能是输入一个字符,显示一个字符,回车换行,再输入并显示一个字符。
三、输出格式
1、gets函数是输入一行字符串,以回车结束,并且回车键会被过滤掉,不会被读回到字符串中。
2、而getchar()是读答取一个字符,包括回车键也会被读成一个字符。这个程序在输入name[i]前,用getchar()把之前scanf("%d",&num[i]);中,输入整数后按的回车键给读走,否则这个回车键会导致gets直接读到一个空字符串。
puts()函数用来向标准输出设备(屏幕)写字符串并换行,
其调用格式为:
puts(s);
其中s为字符串变量(字符串数组名或字符串指针),puts()函数的作用与语printf("%s\n",
s)相同。
gets()函数用来从标准输入设备(键盘)读取字符串直到回车结束,
但回车符不属于这个字符串。其调用格式为:
gets(s);
s为字符串变量(字符串数组名或字符串指针)。gets(s)函数与scanf("%s",
&s)相似,
但不完全相同,
使用scanf("%s",
&s)
函数输入字符串时存在一个问题,
就是如果输入了空格会认为输入字符串结束,
空格后的字符将作为下一个输入项处理,
但gets()
函数将接收输入的整个字符串直到回车为止。
putchar函数只能用于单个字符的输出,且一次只能输出一个字符。getchar函数只能用于单个字符的输入,一次输入一个字符。程序的功能是输入一个字符,显示一个字符,回车换行,再输入并显示一个字符。而运行时字符是连续输入的,运行结果却是正确的,这是因为输入字符后,它们暂存于键盘的缓冲区中,然后由getchar函数从键盘缓冲区中一个一个的取出来。
很高兴为楼主解答,如果!
c1=getchar();就相当于scanf("%c",&c);
下一个语句也类似。
其中先说什么是空字符,空字符包括tab键、回车键、Enter键,当你输入一个字符再按空字符也会作为下一个字符变量,这也就是楼主为什么楼主输入一个字符按回车后不能输入第二个字符,事实上你输入了两个字符。如果你想输入一个字符Enter键然后再输入一个字符你可以这样做:
#include
void main()
{
char c1,c2;
c1=getchar();
getchar();
c2=getchar();
putchar(c1);
putchar(c2);
}
getchar的原型为
int
getchar(void);
功能为从终端读取一个字符
并返回
所以它的返回值应该存在一个变量里面
由于是从终端取一个字符
所以大多数时候是存在字符型变量中的
char
c
=
getchar();
但这样的 *** 作实际上是不正规的
因为getchar的返回值是int型
标准做法是
int
c
=
getchar();
区别只有一个
就是当出错的时候
int型时会返回一个EOF
其值为-1
这个只有在用int的时候
才会体现出来
如果用char型
那么EOF会和终端中可能输入的ascii码0xff混淆
也就是说
如果不需要判断出错
或者终端输入为可读字符时
用char和int没有区别
如果需要判断出错情况
且终端输入为bin类型
那么需要用int
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)