printf,fprintf(stdout,stderr),sprintf等的使用方法及区别
| 名称 | 描 述 | 例 子 | 
|---|---|---|
| stdin | 标准输入 | 键盘 | 
| stdout | 标准输出 | 屏幕 | 
| stderr | 标准错误 | 屏幕 | 
| stdprn | 标准打印机 | LPT1端口 | 
| stdaux | 标准串行设备 | COM1端口 | 
- 1,printf 就是到标准输出(stdout),在屏幕上打印出一段字符串来。
freopen("test1.txt", "w", stdout); printf("test file\n");  //重定向
-  2,sprintf 就是把格式化的数据写入到某个字符串中。返回值字符串的长度。 
-  3,fprintf 是用于文件操作。(在shell下stdin, stdout, 和stderr的文件描述符分别是0, 1和2,) 
stdout – 标准输出设备(printf("…")) ,遇到\n或者缓存到1024才会输出,可以重定向,用 1> 或者直接 >。
( 因为标准输入输出是行缓存,使用setbuf函数设置缓存区缓存为无缓存,使用dup2重定向标准输出为文件描述符
setvbuf(stdout, NULL, _IOLBF, 0) != 0;
dup2(file_fd, STDOUT_FILENO)
stderr – 标准错误输出设备,没有缓存,直接输出,可以重定向,用 2> 。
两者默认向屏幕输出。
  原型:int fprintf(FILE *stream,char *format,[argument]);       
  功能:fprintf()函数根据指定的format(格式)发送信息(参数)到由stream(流)指定的文件.因此fprintf()可以使得信息输出到指  定的文件。
例子:
char name[20] = "lucy"; 
    FILE *out;
    out = fopen( "output.txt", "w" );
    if( out != NULL )
    fprintf( out, "Hello %s\n", name );
    返回值:若成功则返回输出字符数,若输出出错则返回负值。
在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
 执行:./test
 输出:
stderr!
 stdout!
 printf!
若将输入重定向到一个temp.txt文件中,运行:./test>temp.txt 结果如下:
stderr!
查看temp.txt文件内容为:
stdout!
printf!
strerr是作为程序运行过程中的错误显示出来的,若想将它重写向到某文件中,需要运行如下命令:
./test 2>temp.txt
这样运行结果就为:
stdout!
printf!
查看temp.txt文件的内容是:
stderr!
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号