C/C++ getchar函数

ChatGPT 3.5 国内中文镜像站免费使用啦

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门


一.getchar函数简介


1.getchar 原理

getchar 函数用于获取用户输入,达到人机交互的目的,当程序调用 getchar 时,程序就等着用户键盘按键并将用户输入的字符被存放在键盘缓冲区中。直到用户按回车为止(回车字符也放在缓冲区中),当用户键入回车之后,getchar 才开始从缓冲区中读入字符,例如:用户按下键盘的 a 键,那么 getchar 函数就返回字符 a


2.getchar 函数声明

该函数声明在`stdio.h`头文件中,使用的时候要包含stdio.h头文件。如:

#include<stdio.h>
/*
*函数描述:获取控制台用户的输入字符
*
*返回值:返回用户输入值对应的 char 值
*/
char getchar(void)

C 语言中对于控制台程序,我们一般通过 printf 函数输出信息到控制台窗口显示,getchar 函数则是可以从控制台获取用户的输入,而达到和用户交互的目的,注意两者的区别!


3.getchar 使用场景

1.可以和用户交互,获取用户的键盘输入,例如:用户按下键盘的 a 键,那么 getchar 函数就返回字符 a

2.对于 win32 控制台而言,getchar 函数和 system("pause") 函数作用类似,解决控制台黑屏窗口一闪而过的问题;


二.getchar函数使用

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C/C++ getchar函数
//@Time:2021/08/04 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/

#include "stdafx.h"
#include "stdio.h"
#include "windows.h"



int _tmain(int argc, _TCHAR* argv[])
{
	
	printf("请输入字符:\n");
	char c = getchar();
	printf("获取到您输入的字符:%c\n",c);
	system("pause");
	return 0;
}

/*

请输入字符:
w
获取到您输入的字符:w
请按任意键继续. . .

*/

因为我输入的是 w ,所以 getchar 函数返回的就是 w ,你输入任意按键都是可以的;值得注意的是:

  • 1.getchar 函数返回的字符对应的占位符是 %c
  • 2.getchar 函数只能获取单个字符;
  • 3.回车键'\n'也在缓冲区中,并作为最后一个字符被 getchar 函数取出;

如果在回车按下之前输入了多个字符,所有的字符都会被存在缓冲区中,getchar 函数会默认返回第一个字符例如:我们在回车之前输入了 12345 ,如何把缓冲区的所有字符都获取到呢?

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C/C++ getchar函数
//@Time:2021/08/03 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/

#include "stdafx.h"
#include "stdio.h"
#include "windows.h"



int _tmain(int argc, _TCHAR* argv[])
{

	char c = getchar();
	for (;;) //死循环
	{
		
		if (c == '\n') //检查是不是回车键
		{
			printf("最后一个字符啦 %c \n", c);
			break;
		}
		else
		{
			printf("获取缓冲区字符 %c \n", c);
			c = getchar();
		}
	}
	
	system("pause");
	return 0;
}

/*
12345
获取缓冲区字符 1
获取缓冲区字符 2
获取缓冲区字符 3
获取缓冲区字符 4
获取缓冲区字符 5
最后一个字符啦

请按任意键继续. . .

*/

由上面代码可以明白,回车'\n'按键是缓冲区中最后一个字符;


三.getchar函数妙用

一般控制台程序在运行的时候,只看到一个黑窗口一闪而过,具体显示的什么根本来不及看,在前面的文章中我们介绍了可以通过 system 函数解决这个问题,而今天我们使用 getchar 函数一样能完成这个功能,因为在调用 getchar 函数之后,程序回一直等待用户输入直到按下回车之后程序才会继续执行,示例代码如下:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - C/C++ getchar函数
//@Time:2021/08/03 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/


#include "stdafx.h"
#include "stdio.h"



int _tmain(int argc, _TCHAR* argv[])
{
	
	printf("猿说编程 - python和C++教程\n");
	getchar();
	printf("程序结束\n");
	return 0;
}
/*
猿说编程 - python和C++教程
*/

运行这个程序,控制台输出了第一个 printf 函数的内容:猿说编程 – pythonC++教程 ,而第二个 printf 函数的内容: 程序结束 并没有显示到控制台,是因为 getchar 函数在等待我们输入任意字符并按下回车;

当我们按下键盘任意按键并敲回车之后,程序立即输出第二个 printf 函数的内容: 程序结束 ,然后主函数 main 结束,程序退出,控制台窗口消失;


四.猜你喜欢

  1. C语言 数组下标越界和内存溢出区别
  2. C语言 使用指针遍历数组
  3. C语言 指针和数组区别
  4. C语言 指针数组和数组指针区别
  5. C语言 野指针
  6. C语言 函数值传递和址传递
  7. C语言 函数不定长参数
  8. C语言 函数指针
  9. C语言 指针函数
  10. C语言 回调函数 callback
  11. C语言 #pragma once
  12. C语言 #include <> 与 #include “” 区别
  13. C语言 const 修饰函数参数
  14. C语言 const 和 define 区别
  15. C语言 #运算符
  16. C语言 ##运算符
  17. C语言 __VA_ARGS__
  18. C语言 ##__VA_ARGS__
  19. C语言 函数不定长参数 ##__VA_ARGS__经典案例
  20. C语言 va_start / va_end / va_arg 自定义 printf 函数
  21. C语言 main 函数
  22. C语言 main 函数参数 main(int argc, char *argv[])
  23. C语言 局部变量
  24. C语言 全局变量
  25. C语言 全局变量和局部变量区别
  26. C语言 static
  27. C语言 extern
  28. C/C++ putchar函数
  29. C/C++ getchar函数

ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
THE END
喜欢就支持一下吧
点赞2 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容