C语言中getchar()与putchar()函数详解
目录
getchar()与putchar()getchar()getchar()的一个重要机制getchar()与scanf()区别 putchar() 实例1.清空缓冲区2.字符串中有空格
getchar()与putchar()
与其实最基本的作用就是用读取一个字符,再用输出一个字符
基本用法:
#include
int main()
{
char c = 0;
c = getchar();
putchar(c);
return 0;
}
运行结果:
输入一个,然后再打印
这里和 与和的作用基本一致,只不过只对字符类型操作,而对指定的类型进行操作
getchar()
getchar的定义:
getchar()的一个重要机制
在函数的作用与键盘间,存在一个输入缓冲区,从键盘输入的内容会存在这个缓冲中,接下来函数会从缓冲区中取走内容
因为是对于字符进行操作,所以每次执行都会取走输入缓冲区中一个字符
并且还会取走回车也就是与空格
我们用下面的代码进行对输入缓冲区机制的测试:
int main()
{
char ch = 0;
while ((ch = getchar()) != EOF)
{
putchar(ch);
}
return 0;
}
当输入一个字符时,同时我们会按下回车,此时输入缓冲区中就有两个字符:
首先,会先取走字符,然后通过打印出来
接着循环,取走字符,然后通过打印出来,所以在输出中光标不在输出的的后面,而在的下一行
接着,输入缓冲区中以无内容,就会读到,退出循环
还可以用以下代码更进一步验证对于回车的读取:
int main()
{
int i = 0;
char ch = 0;
while ((ch = getchar()) != EOF)
{
putchar(ch);
i++;
}
printf("%d", i);
return 0;
}
输入字符和,这里实际上是输入后,按一次回车,输入后,按一次回车,所以输入缓冲区中的内容为:,所以会读取四次,所以的值为会是4
getchar()与scanf()区别
*与的主要区别是能读取输入缓冲区中的一切字符类型,包括空格与回车,而scanf()不能读取空格与回车
putchar()
putchar的定义:
int putchar ( int character );
实例
1.清空缓冲区
下面一段把代码是输入一段密码,并且还要用getchar()接受是否确认密码的选项:
int main()
{
char password[20] = { 0 };
int ch = 0;
printf("输入密码
");
scanf("%s", password);
printf("请确认密码(Y/N):");
ch = getchar();
if (ch == 'Y')
{
printf("成功
");
}
else
{
printf("失败
");
}
return 0;
}
我们输入一端密码后,还未输入Y或N,代码就自动打印“失败”并退出运行
这其实还是无法读取回车在作祟
当我们输入1234567后,此时在输入缓冲区中其实存的是:
语句读取字符串,因为它无法读取所以此时只会读取走,在输入缓冲区中还有
所以在之后的中,就会读取,不等于Y,所以会打印失败
所以,要把缓冲中的 消化掉,也就是清空缓冲区
只要,再写一个语句,将读取走,就可以了
代码如下:
int main()
{
char password[20] = { 0 };
int ch = 0;
printf("输入密码
");
scanf("%s", password);
printf("请确认密码(Y/N):");
getchar(); //清空缓冲区
ch = getchar();
if (ch == 'Y')
{
printf("成功
");
}
else
{
printf("失败
");
}
return 0;
}
运行成功
2.字符串中有空格
以下代码是输入一个字符串再输出:
int main()
{
char str[20] = { 0 };
scanf("%s", str);
printf("%s", str);
return 0;
}
如果输入的字符串是连续的,也就是没有空格的,此代码正常运行
如果输入的字符串是有字符的,就会出现错误
错误的原因还是无法读取缓冲区中的空格,所以接下来要使用去读取字符串
因为输入的一段字符串一定会是以为结尾
所以在前面的改成即可,只要不遇到就一直读取下去
代码如下:
int main()
{
char str[20] = { 0 };
char ch = 0;
while ((ch = getchar()) != '
')
{
putchar(ch);
}
return 0;
}
运行结果:
到此这篇关于C语言中getchar()与putchar()函数详解的文章就介绍到这了,更多相关C语言 getchar()与putchar()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章: