2017-04-25 160 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在他的評論中指出的錯誤,所有這些都是沒有意義的。 :)

相關問題