☰
关于对C语言 getchar 和 putchar 学习经验
2026/9/30 2:52:27 网站建设 项目流程

一、前言

在 C 语言中,getchar()& putchar()是两个非常基础、也非常常用的字符输入输出函数。

它们都声明在<stdio.h>中:

  • getchar:从函数名也可以看得出来,就是得到一个字符
  • 菜鸟教程对getchar函数的解释: 函数从屏幕读取下一个可用的字符,并把它返回为一个整数。这个函数在同一个时间内只会读取一个单一的字符。
  • putchar:当然啦,与getchar输入对应的,putchar就是输出一个字符
  • 菜鸟教程对putchar函数的解释:函数把字符输出到屏幕上,并返回相同的字符。这个函数在同一个时间内只会输出一个单一的字符。
    初学者在学习 C 语言时,我建议通过下面这段代码来理解它们:
#include<stdio.h>intmain(){intch;//定义一个变量ch,不能是char,因为char是c语言关键字printf("请输入文本:");ch=getchar();//将屏幕上的字符赋值给变量chwhile(ch!=' ')/*注意,这里需要用''而不是""。 这是因为单引号表示是的字符,而双引号则是字符串。 而众所周知的,字符串是不能用==来判断的,因为比较的是内存地址,无意义。*/{putchar(ch);//输出变量chch=getchar();//重新给ch赋值}return0;}

这段代码的功能是:不断读取字符并输出,直到遇到空格为止。
同理,我们也可以稍做修改,让他读到换行\n或者某个的字符(不包含那个字符)为止


二、getchar 和 putchar 的函数原型

在标准库中,它们的原型大致如下:

intgetchar(void);intputchar(intc);

1. getchar 的原型

intgetchar(void);
  • void表示它不接受参数;
  • 返回值类型是int,不是char;
  • 成功时返回读取到的字符;
  • 失败或遇到文件结束标志时返回EOF。

EOF是End Of File的缩写,通常定义在<stdio.h>中,值一般为-1。

2. putchar 的原型

intputchar(intc);
  • 参数c是要输出的字符;
  • 返回值类型是int;
  • 成功时返回写入的字符;
  • 失败时返回EOF。

虽然参数是int,但实际输出时,putchar会把参数转换为字符形式输出。


三、示例代码运行效果

假设程序运行后输入:

hello world

输出结果为:

hello

因为程序会逐个读取字符并输出,直到遇到空格' '为止。

空格本身不会被输出,遇到空格后循环结束。

如果输入:

abc def

输出结果为:

abc

四、getchar 详解

1. getchar 一次只读一个字符

例如:

intch;ch=getchar();

如果输入:

abc

那么第一次调用getchar只会读取'a',不会读取'b'和'c'。

如果想继续读取,需要再次调用:
当然,getchar函数会自己接着往下读,不会傻fufu的读了a又读一遍a(

ch=getchar();// 读取 'b'ch=getchar();// 读取 'c'

2. getchar 的返回值

getchar返回的是读取到的字符的 ASCII 值。

例如:

intch=getchar();

如果输入A,那么ch的值就是65,也就是字符A的 ASCII 码。
如果你此时操作ch的值,例如ch+=1·;之后那么输出的结果会从A变成B(

如果输入结束或者读取失败,getchar会返回EOF。

3. 为什么用 int 接收 getchar 的返回值?

因为getchar需要返回所有可能的字符,还需要返回EOF。

char类型可能无法表示EOF,特别是在某些编译器中,char可能是无符号的。

所以标准写法是:

intch;ch=getchar();

而不是:

charch;ch=getchar();

五、putchar 详解

1. putchar 一次输出一个字符

例如:

putchar('A');

输出:

A

也可以输出转义字符:

putchar('\n');

输出一个换行。

2. putchar 的参数

putchar的参数是int类型,但实际输出的是字符。

例如:

putchar(65);

会输出字符:

A

因为65是字符A的 ASCII 码。

3. putchar 的返回值

putchar成功时返回写入的字符,失败时返回EOF。

大多数情况下,我们不需要检查它的返回值,但在一些对错误处理要求较高的程序中,可以检查。反正我还没有还没有学到


六、常见标准写法:循环读取直到 EOF

getchar和putchar最常见的组合用法,就是逐字符复制输入:

#include<stdio.h>intmain(){intch;while((ch=getchar())!=EOF)//只要没有遇到End of flie就一直循环({putchar(ch);}return0;}

这段代码会不断读取字符并输出,直到遇到文件结束标志EOF。

注意括号:

while((ch=getchar())!=EOF)

不能写成:

while(ch=getchar()!=EOF)

因为!=的优先级高于=,不加括号会导致逻辑错误。

在 Windows 下,可以按Ctrl + Z再按回车表示EOF。

在 Linux 或 macOS 下,可以按Ctrl + D表示EOF。


七、常见的注意事项

1. 用 int 接收 getchar 的返回值

推荐:

intch;ch=getchar();

不推荐:

charch;ch=getchar();

2. 注意 ’ ’ 和 " " 的区别

  • ' '是字符常量,表示一个空格字符;
  • " "是字符串常量,表示包含一个空格的字符串。

在while (ch != ' ')中,必须使用单引号。
毕竟双引号也比不了,只会返回true,让循环一直进行,形成死循环。

3. getchar 会读取换行符

如果输入时按了回车,getchar可能会读取到'\n'。

如果希望遇到换行也停止,可以写成:

while(ch!=' '&&ch!='\n'&&ch!=EOF)

4. 最好检查 EOF

原示例只判断了空格,没有判断EOF。

更安全的写法是:

while(ch!=' '&&ch!=EOF){putchar(ch);ch=getchar();}

5. getchar 和 putchar 是逐字符处理的

它们适合处理字符流,例如:

  • 字符统计;
  • 逐字符复制;
  • 简单加密;
  • 大小写转换;
  • 读取一行文本。

如果需要读取字符串,通常会使用fgets等函数。


总结

getchar和putchar是 C 语言中处理字符输入输出的基础函数。

核心要点如下:

  1. getchar从标准输入读取一个字符;
  2. putchar向标准输出写入一个字符;
  3. getchar的返回值建议用int接收;
  4. 使用getchar时,最好检查EOF;
  5. ' '是空格字符," "是字符串;
  6. getchar每次调用都会读取下一个字符;
  7. 标准复制输入的写法是:
intch;while((ch=getchar())!=EOF){putchar(ch);}

掌握这两个函数之后,就可以进一步学习字符统计、逐字符加密、文本复制等操作。


如果这篇文章对你有帮助,欢迎点赞、收藏、关注。

标签:C语言getcharputchar字符输入输出编程入门

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询