目录
前言
简介C语言中getchar的用法
一、getchar()简介
二、Get character from stdin 说明
2.1 stdin相关说明
任何C程序(基本任何语言均打开),在默认编译好以后,运行时,都会打开三个输入输出流。
- stdin:标准输入,FILE*stdin,键盘
- stdout:标准输出,FILE*stdout,显示器
- stderr:标准错误,FILE*stderr,显示器
2.2 Get character from stdin 的作用
表明getchar可以直接获得数据,因为在程序启动时已将对应内容打开,换言之,可以直接用,例如:
int main()
{
char c = getchar();
putchar(c);
return 0;
}
三、在getchar()基本语法中,getchar()用来获取字符,为何用int接收
因为char类型占1个字节,8个比特位,所有,如果我们获取到的字符对应二进制补码在0000 0000~1111 1111范围内,则正常读取;
但是如果我们取到的字符超过此范围,如果我们用char来接收,会自动截取最低的八个比特位,默认接收成功,从而我们无法辨别出错误。
getchar()函数的返回值是用户输入的第一个字符的ASCII码,如果出错返回-1,且将用户输入的字符回显到屏幕。
四、getchar()的原理及注意事项
(转载—原文链接:https://blog.csdn.net/zff13673839907/article/details/81190511)
getchar()是stdio.h中的库函数,它的作用是从stdin流中读入一个字符,也就是说,如果stdin有数据的话不用输入它就可以直接读取了,第一次getchar()时,确实需要人工的输入,但是如果你输了多个字符,以后的getchar()再执行时就会直接从缓冲区中读取了。
实际上是 输入设备->内存缓冲区->程序getchar
你按的键是放进缓冲区了,然后供程序getchar 你有没有试过按住很多键然后等一会儿会滴滴滴滴响,就是缓冲区满了,你后头按的键没有存进缓冲区. 键盘输入的字符都存到缓冲区内,一旦键入回车,getchar就进入缓冲区读取字符,一次只返回第一个字符作为getchar函数的值,如果有循环或足够多的getchar语句,就会依次读出缓冲区内的所有字符直到’\n’.
要理解这一点,之所以你输入的一系列字符被依次读出来,是因为循环的作用使得反复利用getchar在缓冲区里读取字符,而不是getchar可以读取多个字符,事实上getchar每次只能读取一个字符.
举例:
①
int main() {
while (1) {
int c = getchar();
if ('#' == c) {
break;
}
putchar(c);
}
printf("\nover");
return 0;
}
②
int main() {
while (1) {
int c