您的位置:首页 > 其它

getchar 详解

2015-10-30 15:57 447 查看

介绍

首先说明概念:

  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变为空。程序结束。

读取其他字符前的字符串也可触类旁通。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: