目录:
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