介绍
首先说明概念:
stdin: 标准输入,我理解的就是程序运行后,用户打进的一段字符。我不知道准不准确。
getchar被调用后,若stdin为空,将等待用户键入字符,当按下回车键,则getchar 开始从stdin读入字符,并返回对应的ASCII码。
若stdin不为空,调用stdin后将直接从中读取字符,并返回对应ASCII码。
注意:调用一次getchar只读入一个字符。
/*example1*/
int main () {
int i ;
i = getchar();
j = getchar();
return 0;
}
如果我们运行这个程序,那么:
首先执行到i = getchar();
将等待用户输入字符串。
假设输入的是abcd(回车)
,那么abcd(回车)
将被自动存入stdin中。然后getchar()读取stdin中的a
,并返回对应ASCII码给i;
此时stdin中变为bcd(回车)
然后执行到了j = getchar();
,由于stdin还有内容,getchar,将直接读取b
,并返回对应ASCII码给j
.此时stdin中剩下cd(回车)
。
以此类推。直到stdin为空再调用则重复上述步骤。
用途
可以通过循环,分别获取某个符号前的所有字符;
/*example2*/
int main () {
char c;
while ((c = getchar()) != '\n') {
printf("%c", c);
}
}
这段代码的作用是,循环读取所输入字符串并分别输出。
假设输入的是abcd(回车)
,那么循环将读取abcd
并输出,此时stdin中剩下(回车)
。然后循环继续进行,读取(回车)
,不符合(c = getchar()) != '\n'
,跳出循环。此时stdin变为空。程序结束。
读取其他字符前的字符串也可触类旁通。