getchar 详解

介绍

首先说明概念:
  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变为空。程序结束。

读取其他字符前的字符串也可触类旁通。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值