0

编辑:这个问题解决了。谢谢你的所有答案

这是我的程序:

#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”不见了。为什么会发生这种情况,我该如何解决?

感谢您的时间。

4

2 回答 2

2

你说int c = getchar()哪个会检索"t"
然后,当您说它while (c = getchar())会检索时,请注意,自从您调用语句以来,"h"您甚至没有机会打印出字符。getcharwhile

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

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

于 2014-05-09T20:18:57.330 回答
0

在行

int c = getchar()

你得到't'的值。但是当你打电话时

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

再次调用 getchar 并读取“h”。然后你第一次 putchar 之后。总而言之:在调用 putchar 之前调用 getchar 两次。解决这个问题的方法是调用

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

在顶部

于 2014-05-09T20:09:54.560 回答