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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

printf,fprintf(stdout,stderr),sprintf等的使用方法及区别

發(fā)布時間:2025/4/5 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 printf,fprintf(stdout,stderr),sprintf等的使用方法及区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
名稱描 述例 子
stdin標(biāo)準(zhǔn)輸入鍵盤
stdout標(biāo)準(zhǔn)輸出屏幕
stderr標(biāo)準(zhǔn)錯誤屏幕
stdprn標(biāo)準(zhǔn)打印機LPT1端口
stdaux標(biāo)準(zhǔn)串行設(shè)備COM1端口
  • 1,printf 就是到標(biāo)準(zhǔn)輸出(stdout),在屏幕上打印出一段字符串來。
freopen("test1.txt", "w", stdout); printf("test file\n"); //重定向
  • 2,sprintf 就是把格式化的數(shù)據(jù)寫入到某個字符串中。返回值字符串的長度。

  • 3,fprintf 是用于文件操作。(在shell下stdin, stdout, 和stderr的文件描述符分別是0, 1和2,)

stdout – 標(biāo)準(zhǔn)輸出設(shè)備(printf("…")) ,遇到\n或者緩存到1024才會輸出,可以重定向,用 1> 或者直接 >。
( 因為標(biāo)準(zhǔn)輸入輸出是行緩存,使用setbuf函數(shù)設(shè)置緩存區(qū)緩存為無緩存,使用dup2重定向標(biāo)準(zhǔn)輸出為文件描述符
setvbuf(stdout, NULL, _IOLBF, 0) != 0; dup2(file_fd, STDOUT_FILENO)

stderr – 標(biāo)準(zhǔn)錯誤輸出設(shè)備,沒有緩存,直接輸出,可以重定向,用 2> 。

兩者默認(rèn)向屏幕輸出。

原型: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ù),若輸出出錯則返回負值。

在test.c中輸入如下的代碼

#include<stdio.h> int main() { fprintf(stderr,"stderr!\n"); fprintf(stdout,"stdout!\n"); printf("printf!\n"); return 0; }

編譯: gcc test.c -o test
執(zhí)行:./test
輸出:

stderr!
stdout!
printf!


若將輸入重定向到一個temp.txt文件中,運行:./test>temp.txt 結(jié)果如下:

stderr!

查看temp.txt文件內(nèi)容為:

stdout!

printf!


strerr是作為程序運行過程中的錯誤顯示出來的,若想將它重寫向到某文件中,需要運行如下命令:

./test 2>temp.txt

這樣運行結(jié)果就為:

stdout!

printf!

查看temp.txt文件的內(nèi)容是:

stderr!

參考鏈接

總結(jié)

以上是生活随笔為你收集整理的printf,fprintf(stdout,stderr),sprintf等的使用方法及区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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