ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

printf,fprintf(stdout,stderr),sprintf等的使用方法及区别

2019-04-18 18:53:06  阅读:569  来源: 互联网

标签:stdout fprintf stderr printf test txt


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

 

标签:stdout,fprintf,stderr,printf,test,txt
来源: https://blog.csdn.net/hxlawf/article/details/89383366

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有