C语言中getchar()怎么用?

如题所述

getchar()返回输入流中的一个字节,如果输入流已经到尾部,返回EOF(-1)

例如: 

#define EOF -1

void func(void)

{

int c = getchar();//getchar 返回值是int

if(c==EOF)

return;

func();//递归调用func函数,实现倒序输出

putchar(c);//输出字符

这个函数会在输入EOF后结束读取,然后输出输入的倒续。

扩展资料:

getchar函数语法

1、函数声明

int getchar(void)

2、参数

3、功能

C库函数int getchar(void)从标准输入 stdin 获取一个字符(一个无符号字符)。这等同于getc带有 stdin 作为参数。

4、返回值

该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回EOF。

5、用法

该函数声明在stdio.h头文件中,使用的时候要包含stdio.h头文件。

参考资料来源:百度百科-getchar()

温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-11-23
要明白这个这个问题,首先要理解输入缓冲的机制和scanf的原理。
当运行控制台程序的时候,会有一个输入缓冲区,这个缓冲区就是放置你输入的字符串的,无论你输入的是数字还是字符,放到缓冲区里都是字符串,只有你调用scanf时指定不同的格式才会产生不同的含义。只有当你输入回车的时候,才会把你的输入添加到缓冲区里,当输入回车之前,scanf和getchar都还没有调用。
当你调用scanf的时候,会首先检查缓冲区是否还有内容,如果没有则程序停止,接受输入,当你输入回车后,你的输入进入缓冲区,然后scanf从缓冲区中拿出(拿出的意思是从缓冲区复制一份放到变量里,然后从缓冲区中删除)它想要的字符,如果没有它想要的,则不会从缓冲区中删除任何东西,继续运行。关键是什么是它想要的,这就跟scanf的第一个参数里指定的格式有关了。
如果格式是%c,那么任何字符都是它想要的,所以你第二个程序里的第二个scanf("%c")会得到‘+’后面的空格' '。如果格式是%d,则会忽略任何空白字符(空格、回车、制表符等),忽略的意思是,从缓冲区里删除,但并不保存;如果遇到数字,则拿出并保存给后面的整数,也就是说%d的时候,scanf想要的字符是数字和空白符。所以你第一个程序里的第二个scanf("%d")忽略掉了空格,正确输入了数字。
第2个回答  2014-10-05
char c;
c=getchar();//表示输入一个字符
不过我平时太多直接 getchar(); 以此来直接吃掉前面scanf的那个回车以防干扰下面的输入
另外还有一个getch(),这个作用与getchar()一样是输入一个字符,不过getchar()输入了在控制台会显示字符,getch()不会显示,所以getch()常用作密码输入
第3个回答  推荐于2017-11-23
main()
{ char c;
c=getchar(); /*从键盘接收一个字符,只能一个,多于一个其余作废*/
putchar(c);
}
还可以这样用:
main()
{
putchar(getchar());
}本回答被提问者和网友采纳
第4个回答  2019-03-21
ch=getchar();等待从键盘上输入一个字符
putchar(ch);输出此字符
他们包含在头文件 #include
中.
相似回答