1.getchar和putchar的作用
getchar 输入一个字符,但是其输出的内容是ASCII码值
ch = getchar 用一个变量去接收ASCII值
putchar(ch) 输出一个字符到屏幕上
getchar如果返回失败的话也会输出EOF EOF的本质是-1
- 代替了scanf 和 printf 的输入输出字符的功能
2.案例分析
#include<stdio.h>
int main()
{
int ch = 0;
while ((ch = getchar()) != EOF)
putchar(ch);
return 0;
}
- 代码并没有写入 \n ,但是结果出现了自动换行的结果,这是为什么呢?
getchar和键盘之间有一个输入缓冲区,用于暂时存放键盘打出的字符,输入一个字符,
此时这个字符被存入输入缓冲区中,然后显示面板上会出现闪烁的光标,敲一下空格之后,
输入缓冲区会显示空格的字符\n,此时getchar开始工作,先接收字符,输出之后,
还会去接收\n 导致换行出现
3.getchar与putchar的具体应用场景
1.输入密码案例
#include<stdio.h>
int main()
{
char password[20] = { 0 };
int ch = 0;
printf("请输入密码:");
scanf("%s", password);
printf("请确认密码(Y/N):");
ch = getchar();
if (ch == 'Y')
printf("确认成功\n");
else
printf("确认失败\n");
return 0;
}
- 代码可以运行,但是无法确认,getchar无法正常工作,原因是什么呢?
1.原因分析
- scanf不会取 \n,一旦有空格,scanf的工作就立即停止了
3.情景分析
- 此时说明 \n(即空格) 影响了代码的运行,那么就需要再写代码将 \n 去除掉。
#include<stdio.h>
int main()
{
char password[20] = { 0 };
int ch = 0;
printf("请输入密码:");
scanf("%s", password);
getchar();//将\n拿走了,而且不需要输出,因为是为了消灭\n
printf("请确认密码(Y/N):");
ch = getchar();
if (ch == 'Y')
printf("确认成功\n");
else
printf("确认失败\n");
return 0;
}
4.增加情景(当密码中出现多个空格以及\n)
#include<stdio.h>
int main()
{
char password[20] = { 0 };
int ch = 0;
printf("请输入密码:");
scanf("%s", password);
while (getchar()!='\n')
{
;
}
printf("请确认密码(Y/N):");
ch = getchar();
if (ch == 'Y')
printf("确认成功\n");
else
printf("确认失败\n");
return 0;
}
文章来源:https://www.toymoban.com/news/detail-474059.html
2.只打印数字不打印字符习题
#include<stdio.h>
int main()
{
char ch = '\0';
while ((ch = getchar()) != EOF)
{
if (ch < '0' || ch > '9')
continue;
putchar(ch);
}
return 0;
}
文章来源地址https://www.toymoban.com/news/detail-474059.html
- '0'的ASCII值是48,'9'的ASCII值是57,说明ch的范围就是48--57,只打印这个范围内的数字字符,其他字符不打印。
到了这里,关于getchar与putchar在C语言中的作用的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!