gpt4 book ai didi

C程序输出顺序错误的Eclipse

转载 作者:太空狗 更新时间:2023-10-29 14:55:23 25 4
gpt4 key购买 nike

我已经在我的 Windows 机器上为 c 编程设置了 Eclipse,我已经成功运行了一个“hello, world”程序。但是,当我尝试请求用户输入并运行程序时,Eclipse 上的控制台显示顺序错误。

这是我的

    #include <stdio.h>

int main(void){

char letter;

printf("Please enter a letter:\n");
scanf(" %c, &letter);
printf("The letter you have selected is: %c", letter);

return 0;
}

这个程序构建得很好,并且在 Eclipse 之外运行得很好。但是当我在 Eclipse 中运行它时,我得到了输出:

E <--- (this is my user input)

Please enter a letter:

The letter you have selected is: E

我不确定为什么输出以错误的顺序执行,所以非常感谢任何帮助!谢谢。

最佳答案

是的,Eclipse 会缓冲一定量的输出(我不记得手头有多少),然后才会出现在输出窗口中 。 Eclipse 通过完全缓冲的管道与附加进程通信。在调用 fflush() 或缓冲区已满之前,它不会刷新。我发现在使用 Eclipse 进行调试时,如果我将以下内容放在应用程序的开头附近,效果会最好:

setvbuf(stdout, NULL, _IONBF, 0);

这将导致 stdout 在写入时立即刷新。如果你想用它来调试并关闭它,你可以有条件地编译它:

#ifdef DEBUG
setvbuf(stdout, NULL, _IONBF, 0);
#endif

不需要这样到处都放fflush()

编辑

这是我自己第一次遇到这个问题时找到解决方案的地方。

http://wiki.eclipse.org/CDT/User/FAQ#Eclipse_console_does_not_show_output_on_Windows

Eclipse 的控制台不是真正的控制台或终端,而是 Eclipse 通过完全缓冲而非行缓冲的管道与附加进程通信。这就是换行符 '\n' 不会导致缓冲区被刷新的原因。

关于C程序输出顺序错误的Eclipse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8684303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com