C 库函数 - getchar()

本文深入解析C语言中getchar函数的使用方法,包括其功能、声明、返回值及多个示例代码,帮助读者理解如何正确应用getchar进行字符输入处理。

概要

所属标准库:C 标准库 - <stdio.h>

描述

C 库函数 int getchar(void) 从标准输入 stdin 获取一个字符(一个无符号字符)。这等同于 getc 带有 stdin 作为参数。

声明

下面是 getchar() 函数的声明。

int getchar(void)

返回值

该函数以无符号 char 强制转换为 int 的形式返回读取的字符,如果到达文件末尾或发生读错误,则返回 EOF。

实例
下面的实例演示了 getchar() 函数的用法。

#include <stdio.h>

int main ()
{
   char c;
 
   printf("请输入字符:");
   c = getchar();
 
   printf("输入的字符:");
   putchar(c);

   return(0);
}

让我们编译并运行上面的程序,这将产生以下结果:

请输入字符:a
输入的字符:a

示例

示例1:getchar() 是会读取不可见字符(如 空格 回车,TAB 等)

#include <stdio.h>

void show_options()
{
	char cUserChoose = 'r';
	while ('q' != cUserChoose)
	{
		printf("\e[1;34m\n");
		printf("-----------------------------------\n");
		printf("Usage:1, Show Options first.\n");
		printf("      2, Show Options second.\n");
		printf("      q, Go Back.\n");
		printf("-----------------------------------\n");
		printf("Please input:");
		printf("\e[0m\n");

		cUserChoose = getchar();
		switch (cUserChoose)
		{
		case '1':
			break;
		case '2':
			//do something
			break;
		default:
			break;
		}
	}
}

void run_loop()
{
	char cUserChoose = 'r';
	while ('q' != cUserChoose)
	{
		printf("\e[1;32m\n");
		printf("-----------------------------------\n");
		printf("Usage:1, Test Show Options.\n");
		printf("      2, Test Do Something.\n");
		printf("      q, Quit.\n");
		printf("-----------------------------------\n");
		printf("Please input:");
		printf("\e[0m\n");

		cUserChoose = getchar();
		switch (cUserChoose)
		{
		case '1':
			show_options(); 
			break;
		case '2':
			//do something
			break;
		default:
			break;
		}
	}
}

int main()
{
	run_loop();
	return(0);
}

输入:3[回车]
在这里插入图片描述

示例2:getchar()实现的去掉空格

#include <stdio.h>

char st[500]; 
int u=0; 
void read() 
{ 
	char c; 
	while(c!='\n') 
	{ 
		c=getchar(); 
		while(c==' ') 
			c=getchar(); 
		st[u]=c; 
		u++; 
	} 
} 
int main() 
{ 
	read(); 
	for(int i=0;i<u;i++) 
		printf("st[%d]:%d\n",i,st[i]);
	return 0; 
}

输入:123[空格]abc[Tab].[回车]
在这里插入图片描述
注意:输入字符1,2,3,通过%d输出是49,50,51,原因是:getchar()是输入字符的输入函数,不能直接当做整型变量,在运行时采用ASCII码,1的ASCII码为49。可以通过atoi()或 i=(c-‘0’)*10方式转换;
https://zhidao.baidu.com/question/264777607.html

示例3:getchar()字符数字转换

#include <stdio.h> 
#include <stdlib.h>

void read() 
{ 
	int i=0;
	char buf[32] = {0};
	char c; 

	printf("请输入1-16之间的数字:");

	while((c=getchar()) !='\n') 
	{ 
		buf[i] = c;
		i++;
		if(i >= 32 - 1)
		{
			break;
		}
	} 
	
	if(i==0 || atoi(buf)<1 || atoi(buf)>16)
	{
		printf("输入有错!\n");
		return;
	}
	//打印输出
	for(int j=0; j<i; j++)
	{
		printf("buf[%d]:%d \n",j,buf[j]);
	}
	printf("atoi(buf):%d \n",atoi(buf));


	printf("\n请输入一个0-9之间的数字: ");
	c=getchar();
	int num = c - '0';
	printf("c:%d, num:%d \n",c,num);
} 
int main() 
{ 
	read(); 
	return 0; 
}

C 标准库 - <stdio.h>

http://www.runoob.com/cprogramming/c-standard-library-stdio-h.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值