C語言緩衝區問題

weixin_34185560發表於2017-03-20

今天寫了一個簡單的輸入輸出C語言程式:

#include <stdio.h>

int main()
{
    //setvbuf(stdout,NULL,_IONBF,0);
    char str[20];
    printf("aha?");
    //fflush(stdout);
    scanf("%s",&str);
    printf("%s",str);
}

然後我用Git的命令列介面編譯並執行:

1704608-fca054ee7bd92459.png
GIT CLI編譯執行

執行的結果是,這東西不列印,等我輸入完一起列印。

後來我發現是第一句printf並沒有重新整理緩衝區!
解決方案:

  • 在程式的第一行設定緩衝區為0
    setvbuf(stdout,NULL,_IONBF,0);
  • 手動重新整理緩衝區
    fflush(stdout)

但是我想,我以前沒遇到啊,我看有人說這是windows和linux的區別??
於是我開啟windows的命令列試了一下,根本不需要手動重新整理的!
這個程式正常執行~

相關文章