> 文档中心 > 『C + ⒈』getchar() & putchar() 〖input & output〗

『C + ⒈』getchar() & putchar() 〖input & output〗


🚩write in front🚩

🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎
🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家^星级博主~掘金⇿InfoQ创作者~周榜54»总榜2999🏅
🆔本文由 謓泽 原创 CSDN首发 🙉 如需转载还请通知⚠
📝个人主页-
謓泽的博客_CSDN博客💬
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​
📣系列专栏-
『C+1』系列_謓泽的博客-CSDN博客🎓
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩   
🔉创作时间 ⇨ 2022 年 3 月 21 日📅

目录 getchar() & putchar()  

🚩write in front🚩

🍰前言🍰

🎂putcahr() → 字符数据输出🎂 

🍯putchar() 函数语法形式如下↓🍯

🍯参数如下↓🍯

🎂代码示例🎂

🍯第①种字符型变量🍯

🍯第②种整形变量🍯

🍯第③种常量🍯

🍯第④种转义字符🍯

🍯返回值🍯

🎂putchar()练习题🎂

🍯第①种形式🍯

🍯第②种形式🍯

🎂getchar() → 字符数据输入🎂 

🍯无参🍯

🍯返回值🍯

🍇返回类型🍇

🍯注意↓🍯

🍯第①种多组数据🍯

🍯第②种输入字符直到输入回车🍯

🎂getchar()练习题🎂

🍯最后🍯

🍰前言🍰

相信大家对输入输出函数并不陌生,大家应该对输出函数当中的 printf() 和 输入函数当中的scanf() 是再熟悉不过了。这两种一个输入另一个输出也是在我们程序当中经常可以看的到的尤其是输出函数printf(),可以说这个是每个程序代码中必须要的。

总而言之就是:可以没有输入函数、但是一定要有输出函数(●'◡'●)

那么接下来就来介绍下本篇博客的重点也是输入函数和输出函数,但是对于初学C的小伙伴它们可就没有上面的那两个怎么受欢迎了。但是它们也是我们学C语言的小伙伴们必须要掌握的,那么有请"主角"登场如下所示↓

  • 🍒putchar() → 字符输出函数。
  • 🍒getchar() → 字符输入函数。

🎂putcahr() → 字符数据输出🎂 

输出字符数据是可以使用 putchar() 函数的,其作用是向显示设备进行输出①个无符号字符。

注意:是①个字符,当然也可以说是单个字符咯。

🍯putchar() 函数语法形式如下↓🍯

int putchar ( int character );

使用该函数的头文件就是:#include

🍯参数如下↓🍯

character:要进行输出的字符。

注意→这个字符可以是:字符型变量、整形变量也可以是常量。

那么在这里就用代码分别给演示下代码如下↓

🎂代码示例🎂

🍯第①种字符型变量🍯

#define _CRT_SECURE_NO_WARNINGS 1#includeint main(void){int a = 'A';putchar(a);return 0;}

运行结果🖊:A

🍯第②种整形变量🍯

#define _CRT_SECURE_NO_WARNINGS 1#includeint main(void){int a = 65;putchar(a);return 0;}

运行结果🖊:A

注意:用putchar()输出整形变量会转换成对应ASCll码的值。(十进制转换成字符)

🍯第③种常量🍯

#define _CRT_SECURE_NO_WARNINGS 1#include#define num 65#define c 'A'int main(void){putchar(num);putchar(c);return 0;}

运行结果🖊:AA

🍯第④种转义字符🍯

除了上面的③种情况,putchar()还可以输入转义字符的。

#define _CRT_SECURE_NO_WARNINGS 1#includeint main(void){putchar('\101');return 0;}

运行结果🖊:A

那么无论是那种进行输出我们都不难发现最终输出的都会是字符,无论是转没转换亦如此。

🍯返回值🍯

  • 如果成功,则返回所写的字符。如果发生写错误,就返回EOF并设置错误指示器(ferror)
  • C语言标准函数库中表示文件结束符。

🎂putchar()练习题🎂

题目内容:用putchar()循环打印字母A~Z的字母。代码示例如下↓

🍯第①种形式🍯

#define _CRT_SECURE_NO_WARNINGS 1#includeint main(void){char c = 0;for (c = 'A'; c <= 'Z'; c++){putchar(c);}return 0;}

运行结果:ABCDEFGHIJKLMNOPQRSTUVWXYZ

🍯第②种形式🍯

#define _CRT_SECURE_NO_WARNINGS 1#includeint main(void){int c = 0;for (c = 65; c <= 90; c++){putchar(c);}return 0;}

运行结果:ABCDEFGHIJKLMNOPQRSTUVWXYZ

再次声明:用putchar()输出整形变量会转换成对应ASCll码的值。


🎂getchar() → 字符数据输入🎂 

字符数据输入当中是可以使用getchar()函数,作用是向显示设备进行输入①个无符号字符。

注意:是①个字符,当然也可以说是单个字符咯。

getchar() 函数语法形式如下↓

int getchar ( void );

使用该函数的头文件就是:#include

🍯无参🍯

无类型 void

🍯返回值🍯

如果成功,则返回字符读取(提升为int值)

返回类型为int,以适应特殊值EOF,表示失败。

如果标准输入在文件结束处,该函数返回EOF并设置stdin的EOF指示符(feof)。

如果发生了其他的读取错误,函数也会返回EOF,但会设置它的错误指示符(ferror)。

  • C语言标准函数库中表示文件结束符。

🍇返回类型🍇

相信有细心的小伙伴已经发现了一个问题明明在这里输入的是字符型类型为什么最终的返回值是整形(int)类型而不是字符(char)呢?

解释→如果getchar()的返回值是char类型的话那么它的范围值是0~255这些在ASCll码值上都是合法的范围值。注意:在ASCll码表当中有两个表格Ⅰ基础表 Ⅱ扩展表 不管你那种表格最终的char类型的范围已经把它给占满了。如果在这里的返回值是char类型那么会有一个问题当你获取成功的时候还好说,因为成功的时候你的返回值是一个有效的字符。一旦获取值的时候获取失败的话也就是比特位的概念。原本char类型是有⑧个比特位[最大] 1111 1111 那么我获取的值是假设是:1 000 0000 的话那么这种情况对应的就是错误[虽说实际上编译器我依旧仍未你这个是成功的]。那么当你返回的时候此时就只能截取后⑧位 0000 0000 了。所以这就是为什么返回类型需要整形类型的原因。

拓展→键盘输入的内容或者往显示器中打印的内容,全部都是字符[牢记!]

🍯注意↓🍯

getchar()是只能够接收一个字符的。此时,张三就有疑问了謓泽謓泽为什么我看有些代码上的getchar()可以输入多组数据啊,甚至有些代码可以输入字符直到你输入回车('\n')它就会退出啊,这个是怎么回事鸭(●'◡'●)

这就说明你对这个getchar()的功能不太了解了,那么接下来给你看两组代码如下↓

🍯第①种多组数据🍯

代码示例如下↓

while(scanf("%d%d",&a,&b)!=EOF)

张三同学多组数据并不是用getchar(),而是用scanf()输入函数的( •̀ .̫ •́ )✧

输入包含多组测试数据,正常使用scanf("%d%d”,&a,&b)是只能输入一组。所以,我们就需要加上 while 循环语句。循环条件为读入不为EOF(C语言标准函数库中表示文件结束符)

想要实现退出可以按 CTRL+ c 或者 CTRL + z 这两种方法都是可以退出运行界面的。

🍯第②种输入字符直到输入回车🍯

代码示例如下↓

while (getchar() != '\n')

通过上面我们知道getchar()作用是向显示设备进行输入①个无符号字符。于是,我们这里就要给层循环能让它一直输入。但是终归是要退出的,不然就死循环了。所以,这里加了不等于'\n'(回车),这样当我们输入字符想要退出的时候就可以按回车了。

🎂getchar()练习题🎂

题目一→使用 getchar() 函数获取字符串,然后再用 putchar() 来进行输出。如下代码所示↓

#define _CRT_SECURE_NO_WARNINGS 1#includeint main(void){char a = getchar();putchar(a);printf("\n");getchar();putchar(getchar());return 0;}

运行结果🖊 

A

A

a

a

题目二使用 getchar() 统计输入的字符。如下代码所示↓

#define _CRT_SECURE_NO_WARNINGS 1#include int main(void){int count = 0;while (getchar() != '\n'){count = count + 1;}printf("%d\n", count);return 0;}

运行结果🖊 

C语言Yo

5

注→张三:不是说getchar()是向设备输入⒈个字符吗。这里为什么可以一直输入。在这里一定要注意我们这里是while()循环且表达式!='\n'也就是说当我们没有输入回车的时候表达式会一直为真执行下去。

🍯最后🍯

那么putchar() → 字符输出函数和getchar() → 字符输入函数。就到这里啦,那么到后面还会写一篇博客puts()输出函数和gets()输入函数。

好了学会了就点个👍,没学会收藏起来慢慢学(╹ڡ╹ ),好的话直接三连走起(^∀^●)ノシ