------------------------------------------------
名称 描 述 例 子
------------------------------------------------
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!