stderr和stdout(printf、fprintf、sprintf)(轉)


本文轉自:http://www.cnblogs.com/zhangyabin---acm/p/3203745.html

 

先區分一下:printfsprintffprintf

1printf就是標准輸出,在屏幕上打印出一段字符串來。

2sprintf就是把格式化的數據寫入到某個字符串中。返回值字符串的長度。

3fprintf是用於文件操作。

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

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

1  例子:
2     char name[20] = "lucy"3     FILE *out;
4     out = fopen( "output.txt", "w" );
5     if( out != NULL )
6     fprintf( out, "Hello %s\n", name );
7     返回值:若成功則返回輸出字符數,若輸出出錯則返回負值。

 

 

stdout 與 stderr

stdout, stdin, stderr的中文名字分別是標准輸出,標准輸入和標准錯誤。

 

1,標准輸出和標准錯誤默認都是將信息輸出到終端上,那么他們有什么區別呢?讓我們來看個題目:

  問題:下面程序的輸出是什么?(intel筆試2011

1 int main(){
2 fprintf(stdout,"Hello ");
3 fprintf(stderr,"World!");
4 return0;
5 }

  輸出是

  World!Hello

  在默認情況下,stdout是行緩沖的,他的輸出會放在一個buffer里面,只有到換行的時候,才會輸出到屏幕。而stderr是無緩沖的,會直接輸出,舉例來說就是printf(stdout, "xxxx")  printf(stdout, "xxxx\n"),前者會憋住,直到遇到新行才會一起輸出。而printf(stderr, "xxxxx"),不管有么有\n,都輸出。

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


  stdout -- 標准輸出設備 (printf("..")) 同 stdout 
  stderr -- 標准錯誤輸出設備 
  兩者默認向屏幕輸出。 
  但如果用轉向標准輸出到磁盤文件,則可看出兩者區別。stdout輸出到磁盤文件,stderr只能在屏幕。 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM