日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

stdout和stderr标准输出的区别

發(fā)布時(shí)間:2025/3/15 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 stdout和stderr标准输出的区别 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

stderr和stdout詳細(xì)解說

今天又查了一下fprintf,其中對第一個(gè)參數(shù)stderr特別感興趣。

int fprintf(FILE *stream,char *format,[argument]);

在此之前先區(qū)分一下:printf,sprintf,fprintf。

1,printf就是標(biāo)準(zhǔn)輸出,在屏幕上打印出一段字符串來。

2,sprintf就是把格式化的數(shù)據(jù)寫入到某個(gè)字符串中。返回值字符串的長度。

3,fprintf是用于文件操作。

????? 原型:int fprintf(FILE *stream,char *format,[argument]);???????

????? 功能:fprintf()函數(shù)根據(jù)指定的format(格式)發(fā)送信息(參數(shù))到由stream(流)指定的文件.因此fprintf()可以使得信息輸出到指? 定的文件。

???? 例子:

?char name[20] = "lucy";?

?? FILE *out;
??? out = fopen( "output.txt", "w" );
??? if( out != NULL )
??? fprintf( out, "Hello %s\n", name );

??? 返回值:若成功則返回輸出字符數(shù),若輸出出錯(cuò)則返回負(fù)值。

好了,以上到此為止。

然后深挖stdout,stderr。

stdout,?stdin,?stderr的中文名字分別是標(biāo)準(zhǔn)輸出,標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)錯(cuò)誤。

今天時(shí)間倉促,以下摘自

http://blog.sina.com.cn/s/blog_912673ce01013qq9.html(十分感謝)

1,我們知道,標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯(cuò)誤默認(rèn)都是將信息輸出到終端上,那么他們有什么區(qū)別呢?讓我們來看個(gè)題目:

問題:下面程序的輸出是什么?(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是無緩沖的,會(huì)直接輸出,舉例來說就是printf(stdout,?"xxxx")?和?printf(stdout,?"xxxx\n"),前者會(huì)憋住,直到遇到新行才會(huì)一起輸出。而printf(stderr,?"xxxxx"),不管有么有\(zhòng)n,都輸出。

2,fprintf(stderr, "Can't open it!\n");?
fprintf(stdout, "Can't open it!\n");?
printf("Can't open it!\n");?

這3句效果不是一樣啊,有什么區(qū)別嗎?

有區(qū)別。?
stdout -- 標(biāo)準(zhǔn)輸出設(shè)備 (printf("..")) 同 stdout。?
stderr -- 標(biāo)準(zhǔn)錯(cuò)誤輸出設(shè)備?
兩者默認(rèn)向屏幕輸出。?
但如果用轉(zhuǎn)向標(biāo)準(zhǔn)輸出到磁盤文件,則可看出兩者區(qū)別。stdout輸出到磁盤文件,stderr在屏幕。?

例如:?
my.exe?
Can't open it!?
Can't open it!?
Can't open it!?

轉(zhuǎn)向標(biāo)準(zhǔn)輸出到磁盤文件tmp.txt?
my.exe > tmp.txt?
Can't open it!?

用TYPE 看 tmp.txt的內(nèi)容:?
TYPE tmp.txt?
Can't open it!?
Can't open it!

總結(jié):注意1,點(diǎn),2點(diǎn)即可!

總結(jié)

以上是生活随笔為你收集整理的stdout和stderr标准输出的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。