小弟急求:C语言问题

w444308606 2012-12-01 05:04:54
#include "stdafx.h"
#include "stdlib.h"

int _tmain(int argc, _TCHAR* argv[])
{
putchar(getchar());
putchar(getchar());
putchar(getchar());

system("pause");
return 0;
}

其中putchar函数的调用,到底顺序是怎样的?
为什么我连续输入abc,按下回车,会出现abc的相应字符?
如果按照语句来,输入一个a,按下回车,则立刻出来一个a;再输入一个b,按下回车,出来一个b;
之后便不让再继续输入了?
这到底是什么原因?
...全文
200 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
prajna 2012-12-01
  • 打赏
  • 举报
回复
putchar,getchar是對輸入缓冲进行操作, getchar 讀取緩衝區的第一個字符,將這個字符從緩衝區去掉,其實就是將緩衝指針移到下一個字符位置 putchar 輸出一個字符 你輸入abc 輸入緩衝區就有了abc 回車后 第一個getchar執行得到a; putchar輸出a; 因爲getchar返回的就是a 第二個getchar執行時得到b;因爲a已經移出緩衝區,緩衝區的第一個字符現在是b; putchar輸出b; 第三個getchar執行時得到c; putchar輸出c;
delong45 2012-12-01
  • 打赏
  • 举报
回复
第一条语句接收的是a,第二条接收的是打完a之后的回车键,第三条接收b,所以出现这个效果,每条语句下面加getchar()或者fflush(stdin);就好,好多人遇到这个问题了
lilianjie001 2012-12-01
  • 打赏
  • 举报
回复
putchar每次只能输出一个字符,另外你是如a之后按下回车,会使用你的一个getchar的,输入a+回车,再输入b+回车,这相当于4个字符了。
apexMing 2012-12-01
  • 打赏
  • 举报
回复
putchar,getchar只对缓冲区进行操作,当你敲回车键之后开始对缓冲区进行处理。

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧