编辑:此问题已解决。谢谢你的所有答案
这是我的计划:
#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”。 为什么会发生这种情况?我该如何解决?
谢谢你的时间。答案 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);
在顶部