C语言中getchar()和putchar()函数

 目录:

1、getchar()和putchar()函数的定义。

2、getchar()函数为什么用int定义返回值类型。

3、函数getchar()和函数scanf()的工作原理。


 一、getchar()和putchar()函数的定义。

getchar()和putchar()是一对字符输入/输出函数。getchar()不带任何参数,getchar()用于读取用户从键盘输入的单个字符。putchar()向终端输出一个字符,其格式为putchar()。getchar()和putchar()函数包含在头文件stdio.h中,使用时需包含此头文件。

举例:

#include<stdio.h>

int main()
{
	int ch = getchar();//实际变量ch中放的是读到的那个字符的ASCII码值
	putchar(ch);//putchar接收到一个参数(ASCII码值),输出相对应的字符
	return 0;
}

 二、getchar()函数为什么用int定义返回值类型。

    getchar()函数的返回值类型时整形,当发生读取错误时,返回整型值是-1,把一个负值赋给一个char型的变量是不正确的。当读取正确时,他会返回用户从键盘输的第一个字符的ASCII码值,ASCII码值是数字符号,通过这里也可以看出来getchar()返回值类型应用int定义。

三、 函数getchar()和函数scanf()的工作原理。

工作原理:

相同 :

getchar()和scanf()不是直接从键盘上拿数据,他们是从键盘的缓冲区拿数据,键盘输入的字符会放入缓冲区,若用户不按回车键,所有放入缓冲区的字符都不会被读。

不同 :

在用户按下回车键后,缓冲区内会存在’\n’,scanf只会都'\n'之前的字符,不读' \n'和空格.   getchar会将缓冲区的所有字符全部读走,其中包括空格和'\n'。在windows下如果想结束,就输入Ctrl+z,表示EOF.                      

实例:输入密码和确认流程

#include<stdio.h>
int main()
{
	char password[20] = { 0 };
	printf("请输入密码:>");
	scanf("%s", password);//scanf不是直接从键盘拿数据,scanf的工作原理是:在scanf和键盘之间 
                          //  的输入缓冲区中拿数据,
	                      //输入缓冲区有数据他就拿,没有他就等,当从键盘上输入字符abcdef为了 
                          // 让字符abcdef来到缓冲区
	                      //在键盘上输入\n(回车)字符连同\n一起来到缓冲区,scanf会拿走\n之前 
                          // 的字符abcdef缓冲区剩下\n
	                      //scanf不读空格和回车
	int tmp = 0;
	while ((tmp = getchar()) != '\n')//用来清理缓冲区
	{
		;
	}
	printf("请确认密码(y/n):"); 
	int ch = getchar();  //getchar和scanf的工作原理一样,他会读走缓冲区里剩余的\n,ch里边是\n
	if (ch == 'y')       //getchar和putchar每次只会输入和输出一个字符
	{
		printf("确认成功\n");
	}
	else
	{
		printf("确认失败\n");
	}
	return 0;
}

注意:

putchar()输出指定的字符,不会在输出后自动换行,所以putchar(a)和putchar(b)之间要加putchar('\n'),用作换行。

 举例:


putchar,getchar,scanf和printf区别

putchar和getchar是输入输出单字符的,printf和scanf可以输入多字符,并且getchar和putchar只可以用于字符型的输入输出,而scanf和printf可以用于整型,浮点型和字符型等类型的输入和输出。


getchar读取的字符 包括数字,符号、字母。都能找到相对应的ASCII码值。本质上是对字符的输入。

原文地址:http://t.csdn.cn/bkbgS

  • 30
    点赞
  • 115
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值