【发布时间】:2013-08-01 03:12:29
【问题描述】:
Cygwin64 位
编译命令:
gcc hello.c -o hello -ansi -pedantic-errors
运行命令
./hello
你好.c
#include<stdio.h>
int main() {
/*setbuf(stdout, 0); I KNOW THIS WILL WORK IF ADDED, it is a solution, but I want to know why line break itself is not working*/
printf("hello world!\n");
printf("hello world again!\r\n");
/*fflush(stdout); without fflush, the above strings are not showing*/
while(1)
{
}
}
问题:
-
我不希望每次 printf 后都 fflush 让终端及时显示字符串,那怎么办?
答案:setbuf(stdout, 0);
考虑到很多帖子指出换行符可以解决问题,为什么“\n”或“\r\n”在我的情况下不起作用?
cygwin 终端的行为是否与普通 Linux 终端不同?由于我没有安装linux,有人给我测试一下吗?
或者让我问一个更笼统的问题:在哪种终端上,“换行将强制刷新”这句话是正确的?
谢谢
【问题讨论】:
-
我对 cygwin 的体验是它接近 Linux 的感觉,但无论你怎么努力都无法达到。可能是内核没有检测到您处于终端会话中。也许尝试不同的终端(
xterm,也许?),甚至是不同的 shell。看看当您通过ssh登录时会发生什么。如果您尝试任何方法都无法解决问题,那么 cygwin 完全有可能很糟糕。 -
“cygwin 的终端与普通 Linux 终端的行为是否不同?”有许多不同的 linux 终端,我认为它们的行为并不相同。但是如果你在谈论内核终端,是的,我想它一定是非常不同的。前任。 :en.wikipedia.org/wiki/Comparison_of_terminal_emulators
-
根据这个页面,现在默认是薄荷味的。 code.google.com/p/mintty(编辑----我说错了:我认为Cygwin默认使用Windows控制台。----)
-
它在 Cygwin 上对我有用。很难从您的问题中分辨出什么有效或无效。您的评论说“我知道这会起作用”,但实际上并没有,对吧?请向我们展示一个不起作用的实际程序,并清楚地说明它的行为方式。顺便说一句,您 不需要 需要打印
\r字符;只需'\n'即可指定行尾。