2017-04-25 86 views
0

Xcode和C的新手 感觉我在Xcode中存在一个错误或某种错误的设置。 我必须在printf()中写入的每行都包含\ n,否则当我运行该程序时它不会出现在屏幕上。我将包含两个图像,以便您可以在最简单的编码中看到我的意思。有没有人遇到过这个?我问过,但使用Xcode的其他人都没有这样的问题。 With \n it shows "Hello World!When I remove \n nothing appears这两个例子仍然运行没有任何错误......必须包含 n Xcode C

+0

只是fyi,我希望你没有运行Xcode 8.3.x. [Xcode 8.3.x中有一个错误](https://forums.developer.apple.com/thread/75035),其中集成的控制台输出(您的屏幕截图显示您正在使用)不遵守stdout行缓冲和/或直接冲洗。我已经证实了这一点,并已经与C(通过printf和fflush)和C++(通过std :: cout和std :: flush)进行了碰撞。坦率地说,这是屁股的皇室痛苦,太多以至于很多人都回复到了最高8.2,甚至回到了7。举个例子,我回到了8.2.1,这个问题似乎并没有出现在那里。 – WhozCraig

+0

尝试使用fflush(stdout);在我的printf()之前;但仍然没有出现......感谢这个想法! – PhallBus

+0

之后你的printf,而不是之前。 – yellowantphil

回答

1

取决于stdout在您的环境中实施,printf明显行为可以是不同的。如果您没有看到响应,则可能是因为正在处理流,因此必须在显示其他缓冲数据之前看到\n字符。在我的Windows 7实现中,它不需要\n字符,但是在我的家庭Linux实现中,它的确如此。我用这个词明显是,因为它很可能不是执行printf那是行为差异的原因,而是你的控制台的执行。

正如评论所说,如果你的stdout实现不显示,直到与\n字符触发,你可以用一个电话迫使它fflush(...)

printf("hello"); 
fflush(stdout); 

当然,但,如果你有@WhozCraig在他的评论中指出的错误,所有这些都是没有意义的。 :)

相关问题