[讨论] 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