scanf的一点学习心得

我写了下面的一段代码:

TCHAR ch;

for(;;)
{
scanf(TEXT("%c"), &ch);
printf(TEXT("%c\n"), ch);

}

本来的目的是想输入一字符,打印出一个字符,一直持续下去。但是实际的输出确是,不只是打出了输入得字符,尽然还多打了一个换行。

后来通过查资料才知道scanf竟然连表示输入结束的\n也不放过,因而导致了每次多输出一个回车。那么,如果让下一轮循环的scanf不会读取到上一次表示输入的\n呢?很简单,在printf后调用fflush(stdin)即可,清空输入buffer,就能得到满意的结果了。

但是,还有一点是比较有意思的,如果我直接输入\n,scanf会把这唯一的\n既当成是输入结束符,又看做是输入的字符,scanf返回后,ch变量值是\n

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值