作者anoymouse (没有昵称)
看板C_and_CPP
标题[讨论] printf before scanf 请益
时间Thu Aug 22 18:04:46 2019
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
差在哪里呢? 谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 211.75.14.193 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/C_and_CPP/M.1566468289.A.BF3.html
1F:→ dces4212: 有被优化成puts吗 08/24 00:02
2F:→ b0920075: 哪里有asdf 08/24 03:19
3F:→ anoymouse: 讲错 dfdfdfdfd 08/24 23:06