写点什么

getchar()

作者:謓泽
  • 2022 年 7 月 17 日
  • 本文字数:1823 字

    阅读完需:约 6 分钟

getchar()

🚩write in front🚩

🔎大家好,我是謓泽,希望你看完后。能对你有所帮助,不足请指正,共同学习交流🔎

🆔本文由 謓泽 原创 如需转载还请通知⚠

📝个人主页-InfoQ - 促进软件开发及相关领域知识与创新的传播-极客邦💬

🎁欢迎各位→点赞👍 + 收藏⭐️ + 留言📝​

✉️我们并非登上我们所选择的舞台,演出并非我们所选择的剧本📩

📢2021 年度博客之星物联网与嵌入式开发 TOP5~2021 博客之星 Top100~阿里云专家 ^ 星级博主~掘金⇿InfoQ 创作者~周榜 92»总榜 1382👋

🎂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()输入函数。

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

发布于: 刚刚阅读数: 3
用户头像

謓泽

关注

一起happy! 2022.01.29 加入

谁也不知道旅途的终点是怎么样的,现在只不过是开始。便全力以赴!终点必将是星辰大海。 2021年度博客之星物联网与嵌入式开发TOP5 2021博客之星Top100 阿里云专家博主^星级博主 CSDN⇿掘金⇿InfoQ[创作者]

评论

发布
暂无评论
getchar()_7月月更_謓泽_InfoQ写作社区