getchar()或putchar()继续吃我输入的第一个字符

时间:2014-05-09 19:58:19

标签: c++ c buffer getchar putchar

编辑:此问题已解决。谢谢你的所有答案

这是我的计划:

#include <stdio.h>
int main(){

printf("write something : \n");
int c = getchar();

while((c = getchar()) != EOF){

if (c == ' ' || c == '\t')
 printf(" \n");
else
  putchar(c)
}
return 0;
}

每次我运行它,它工作正常,但吃我的输入的第一个字符 例如,当我运行程序时,输出如下所示:

write something : 
this is a sentence.
his 
is
a
sentence.

缺少“t”。 为什么会发生这种情况?我该如何解决?

谢谢你的时间。

2 个答案:

答案 0 :(得分:2)

您说int c = getchar()将检索"t" 然后,当您说while (c = getchar())它会检索"h"时,请注意,自从您在getchar声明中调用while后,您甚至没有机会打印出该字符。< / p>

要解决此问题,请声明int c = 0;int c;

然后,当您在getchar()循环中拨打while时,您将从第一个字符开始。

答案 1 :(得分:0)

在第

int c = getchar()

你得到了&#39; t&#39;的价值。但是当你打电话时

while((c= getchar()) != EOF)

再次调用getchar并且&#39; h&#39;被读了。然后是你 putchar之后第一次。总结如下: 在调用putchar之前调用getchar两次。解决这个问题 是打电话

int c = getchar();
putchar(c);

在顶部