Linux fprintf的用法
一、fprintf 函數(shù)描述
fprintf其作用是格式化打印,也叫格式化輸出,可以指定輸出到一個(gè)流文件中,即相輸出流中寫入數(shù)據(jù)。fprintf()函數(shù)根據(jù)指定的格式(format),向輸出流(stream)寫入數(shù)據(jù)(argument)。fprintf( )會(huì)根據(jù)參數(shù)format 字符串來(lái)轉(zhuǎn)換并格式化數(shù)據(jù),然后將結(jié)果輸出到參數(shù)stream 指定的文件中,直到出現(xiàn)字符串結(jié)束('\0')為止。
函數(shù)聲明:
- int?fprintf (FILE*?stream,?const char*format, [argument])
參數(shù):
- stream-- 這是指向 FILE 對(duì)象的指針,該 FILE 對(duì)象標(biāo)識(shí)了輸出數(shù)據(jù)流。
- format-- 這是 C 字符串,包含了要被寫入到流 stream 中的文本。它可以包含嵌入的 format 標(biāo)簽,format 標(biāo)簽可被隨后的附加參數(shù)中指定的值替換,并按需求進(jìn)行格式化。
- format 標(biāo)簽屬性是%[flags][width][.precision][length]specifier
- [argument]:附加的參數(shù)列表?
其中,Linux的輸出數(shù)據(jù)流stream提供了5種標(biāo)準(zhǔn)的流:
stderr的優(yōu)先級(jí)高于stdout,在輸出調(diào)試信息的時(shí)候,優(yōu)先使用fprintf(stderr,...),或者某個(gè)指定的文件流fprintf(some_stream,...)。
二、shell 輸出重定向
需要說(shuō)明的是stdin并不一定來(lái)自鍵盤,stdout也并不一定顯示在屏幕上,他們都可以是重定向到磁盤文件或其他設(shè)備上。
shell下stdin,stdout和stderr的文件描述符分別是0,1和2。
2.1 采用 > 進(jìn)行輸出重定向,采用>>進(jìn)行追加方式重定向
$./run > output.log #每次清空 $./run >> output.log #每次在outout.log末尾追加運(yùn)行./run后的正常日志會(huì)輸出到output.log文件中,此時(shí)錯(cuò)誤信息仍然會(huì)輸出到屏幕。
2.2 分別輸出正常日志和錯(cuò)誤日志,2> 代表stderr重定向
$./run > output.log 2> error.log2.3 錯(cuò)誤日志合并到正常日志
$./run > output.log 2>&1三、程序中輸出重定向
利用freopen函數(shù)在程序中進(jìn)行輸出重定向.
函數(shù)聲明:
- FILE * freopen(const char *filename, const char *mode,FILE *stream);
參數(shù)說(shuō)明:
- filename:要打開(kāi)的文件名;
- mode:文件打開(kāi)的模式,和fopen中的模式(r/w)相同。
- stream:文件指針,通常使用標(biāo)準(zhǔn)流文件(stdin/stdout/stderr)。
使用方法:
#從文本輸入 freopen("data.in","r",stdin);? #從屏幕輸入 freopen("/dev/console","r",stdin);#輸出到文件 freopen("data.out","w",stdout); if(freopen("err.log",w,stderr)==NULL) {fprintf(stderr,"error redirecting stderr\n"); }#關(guān)閉重定向 fclose(stdin); fclose(stdout);參考:
總結(jié)
以上是生活随笔為你收集整理的Linux fprintf的用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: VS2010序列号(激活码)
- 下一篇: Linux ps aux查看进程