持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第20天,点击查看活动详情
🚩write in front🚩
🔎大家好,我是泽奀,希望你看完后。能对你有所帮助,不足请指正,共同学习交流🔎
🏅2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家^星级博主~掘金⇿InfoQ创作者~周榜89»总榜1512🏅
🆔本文由 謓泽 原创 CSDN首发🙉如需转载还请通知⚠
📝个人主页-掘金 (juejin.cn)💬
🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝
📣系列专栏-[C系列] 从0到1 - 泽奀的专栏 - 掘金 (juejin.cn)🎓
✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩
🎂getchar() → 字符数据输入🎂
字符数据输入当中是可以使用getchar()函数,作用是向显示设备进行输入①个无符号字符。
注意:是①个字符,当然也可以说是单个字符咯。
getchar() 函数语法形式如下↓
int getchar ( void );使用该函数的头文件就是:#include<stdio.h>
🍯无参🍯
无类型 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 #include<stdio.h> int 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 <stdio.h> 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()输入函数。
好了学会了就点个👍,没学会收藏起来慢慢学(╹ڡ╹ ),好的话直接三连走起(^∀^●)ノシ