其實(shí)這節(jié)沒啥說(shuō)的,就是函數(shù)調(diào)用,把printf改成了fprintf.
反正這節(jié)沒什么內(nèi)容把一個(gè)小題放這里吧.
我們知道,標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤默認(rèn)都是將信息輸出到終端上,那么他們有什么區(qū)別呢?讓我們來(lái)看個(gè)題目:
問(wèn)題:下面程序的輸出是什么?(intel筆試2011)
int main(){
fprintf(stdout,"Hello ");
fprintf(stderr,"World!");
return0;
}
解答:這段代碼的輸出是什么呢?你可以快速的將代碼敲入你電腦上(當(dāng)然,拷貝更快),然后發(fā)現(xiàn)輸出是
World!Hello
這是為什么呢?在默認(rèn)情況下,stdout是行緩沖的,他的輸出會(huì)放在一個(gè)buffer里面,只有到換行的時(shí)候,才會(huì)輸出到屏幕。而stderr是無(wú)緩沖的,會(huì)直接輸出,舉例來(lái)說(shuō)就是printf(stdout, "xxxx") 和 printf(stdout, "xxxx\n"),前者會(huì)憋住,直到遇到新行才會(huì)一起輸出。而printf(stderr, "xxxxx"),不管有么有\(zhòng)n,都輸出。