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>
void main(void)  
{  
    fprintf(stderr,"stderr!\n");  
    fprintf(stdout,"stdout!\n");   
    printf("printf!\n");  
}  


编译: 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!

 

上一篇:沉寂许久,来一个工具——supervisor


下一篇:Windows用户相关操作