Getchar()或putchar()一直吃掉我输入的第一个字符

getchar() or putchar() keeps eating the first character of my input

本文关键字:输入 字符 第一个 putchar 一直 Getchar      更新时间:2023-10-16

编辑:这个问题解决了。谢谢大家的回答

这是我的程序:

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

感谢您的宝贵时间。

您输入int c = getchar(),它将检索"t"
然后,当您说while (c = getchar())时,它将检索"h",请注意,您甚至没有机会打印字符,因为您在while语句中调用了getchar

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

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

int c = getchar()

得到t的值。但是当你调用

while((c= getchar()) != EOF)
再次调用

getchar并读取'h'。然后在那之后第一次见到他。总结一下:在调用putchar之前调用getchar两次。一个解决方案将调用

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

在顶部