getchar()函数的详解以及使用时需要注意的一些细节 您所在的位置:网站首页 gets_s调用的参数太少 getchar()函数的详解以及使用时需要注意的一些细节

getchar()函数的详解以及使用时需要注意的一些细节

2023-11-19 02:50| 来源: 网络整理| 查看: 265

在这里插入图片描述 这篇文章要探讨的是“getchar()函数的详解以及使用时需要注意的一些细节”。涉及getchar()函数的应用和需要注意的问题。属于C语言基础篇(持续更新)。

在C语言的学习过程中,我们常常需要接收键盘的输入,在接收键盘输入的过程中涉及到的函数通常有三个getchar()、scanf()、fgets()。这三个函数各自的功能各不相同,需要我们根据不同的需求条件来选择不同的输入接收函数。而在这三个函数的使用过程中,有一些细节需要我们注意一下。所以接下来的三篇文章就是分别介绍这三个函数的。

getchar()(函数原型:int getchar(void)) 一般用法:

char c = getchar();

getchar()函数的作用很简单,从输入缓存区中读取一个字符,读取到的字符储存在返回值里面。

getchar()函数注意事项1:

对于你输入的任何数据,getchar() 都会把它们当作是字符来处理,而且每次只获取一个字符。例如你输入“11”,getchar() 并不会把它当做“11”来处理,而是把它当做两个‘1’来处理。同理,你输入“3.14”它也不会当成“3.14”来处理而是当做‘3’、‘.’、‘1’、‘4’来处理,需要特别说明的是,像是换行符(\n)、回车符\归位符(\r)、缩进符(\t)之类的转义字符,它们虽然在代码中的表示和我们平时说明中用的是两个字符。但实际上它们在机器中存储和还是以一个字符来存储。所以别想着你敲个回车它能给你输入‘/’和‘n’。我们表示是这么表示,但在机器内部它就还是一个字符而已。

对于换行符(\n)和回车符(\r)的区别我在这里简单说一下。 换行符(\n)的作用是换一行输出。回车符(\r)的作用是把光标回到该行的行首。这两者的概念之所以有很多人会疑惑,这是由于我们平时的习惯称呼导致的。我们习惯性的把键盘上面那个换行回车键称为回车键,事实上它应该是两个键的混合(\r\n)。 同时也因为我们现在的开发环境便捷导致的,在一般的开发环境下面换行符(\n)就已经相当于同时具备换行回车(\r\n)的功能了,所以我们平时对于(\n)用的就比较多,(\r)就比较少用了。 但是如果在一些不那么高级的开发环境(例如小型嵌入式系统)下面的话,情况就不一样了,换行符(\n)就仅仅只是换行而已,你原本的光标在一行的哪个位置,就还在新行的哪个位置。你若想要光标回到行首,你就得手动输出回车符(\r)。

getchar()函数注意事项2:

getchar()函数是会阻塞等待的。在程序调用getchar()函数的时候如果缓存区中没有数据的话,getchar()函数便会阻塞等待用户的输入。

getchar()函数注意事项3:

用getchar()的返回值做判断的时候,需要考虑到是否存储保留的问题。无论你是否接收getchar()的返回值,只要你调用了getchar(),那么缓存区中就会被读取走一个字符。

这里用一个我曾经犯错误的例子来说明一下: #include int main(void) { char c[100] = {0};//创建一个数组来存储输入 int i = 0;//记录一共输入了几个字符,方便后面输出。 while(1) { if(getchar() == ‘\n’)//先判断输入的是否是回车键 break; c[i] = getchar();//再把判断好的输入值存储起来 i++; } for(int k = 0;k 0};//储存输入数据用的数组 int i = 0;//记录输入的字符个数方便输出 char z = 0;//解决方法就是加入临时变量来先储存再判断 while(1) { z = getchar();//先储存输入的数据 if(z == ‘\n’)//再判断 break;//如果是回车就退出循环 c[i] = z;//如果不是回车就存储 i++;//计数加一 } for(int k = 0;k 0}; while((c[i++] = getchar()) != '\n'); for(int k = 0;k


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有