[討論] printf before scanf 請益

作者: anoymouse (沒有暱稱)   2019-08-22 18:04:46
Linux gcc
我的stdout的緩衝應該是行緩衝(_IOLBF),所以如果沒有換行符,那printf的內容
就會在碰到retrun的時候才被一併flush出來。
但為什麼我這邊下printf("asdf"), asdf會馬上顯示? scanf的buffer不會跟printf共用吧?
#include<stdio.h>
#include<unistd.h>
#include<stdlib.h>
void foo(){ fprintf(stderr,"foo says good bye\n");}
void bar(){ fprintf(stderr,"bar says bye.\n");}
int main(int argc , char ** argv){
atexit(foo);
atexit(bar);
int x;
int count = 0;
printf("dfdfdfdfdfd");
scanf("%d",&x);
sleep(2);
if(argc > 1 && strcmp(argv[1],"exit") == 0)
exit(0);
if(argc > 1 && strcmp(argv[1],"_exit") == 0)
_exit(0);
return 0;
}
且為什麼連結裡的結果卻要等到scanf的內容執行完才顯示第一個printf的資料?
https://stackoverflow.com/questions/16877264/c-c-printf-before-scanf-issue
差在哪裡呢? 謝謝
作者: dces4212 (flawless)   2019-08-24 00:02:00
有被優化成puts嗎
作者: b0920075 (Void)   2019-08-24 03:19:00
哪裡有asdf
作者: anoymouse (沒有暱稱)   2019-08-24 23:06:00
講錯 dfdfdfdfd

Links booklink

Contact Us: admin [ a t ] ucptt.com