2009-08-11 63 views

回答

9

最有可能的,stdout是行緩衝。您的程序不會調用fflush或發送換行符,以便緩衝區不會被寫出。

#include <stdio.h> 

int main(void) { 
    printf("hai\n"); 
    for(;;) 
    ; 
    return 0; 
} 

也看到C FAQquestion 12.4What's the correct declaration of main()?

+0

爲什麼downvote?未能從不返回的函數中包含「return 0」? – 2009-08-11 13:14:53

+0

你甚至沒有修復他的包括錯字... – 2009-08-11 13:21:03

+0

我downvoted因爲你有什麼不編譯。 – 2009-08-11 13:22:39

3

默認情況下,標準輸出趨於行緩衝,因此您沒有看到任何內容的原因是因爲您沒有刷新行。

這將工作:

#include <stdio.h> 
int main (int argC, char *argV[]) 
{ 
    printf("hai\n"); 
    for(;;) 
     ; 
    return 0; 
} 

或者,你可以fflush標準輸出或使程序退出剛剛擺脫無限循環:

#include <stdio.h> 
int main (int argC, char *argV[]) 
{ 
    printf("hai"); 
    return 0; 
} 

,但你可能想換行反正有。

2

您的(;;)循環停止從被刷新流。正如其他人所建議的那樣,在正在輸出的字符串中添加一個換行符,或者明確地刷新流:

fflush(stdout); 

printf後。並糾正#include的拼寫。

相關問題