今天又查了一下fprintf,其中对第一个参数stderr特别感兴趣。

int fprintf(FILE *stream,char *format,[argument]);

在此之前先区分一下:printf,sprintf,fprintf。

1,printf就是标准输出,在屏幕上打印出一段字符串来。

2,sprintf就是把格式化的数据写入到某个字符串中。返回值字符串的长度。

3,fprintf是用于文件操作。

原型: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 );

返回值:若成功则返回输出字符数,若输出出错则返回负值。

好了,以上到此为止。

然后深挖stdout,stderr。

stdout, stdin, stderr的中文名字分别是标准输出,标准输入和标准错误。

今天时间仓促,以下摘自

http://blog.sina.com.cn/s/blog_912673ce01013qq9.html(十分感谢)

1,我们知道,标准输出和标准错误默认都是将信息输出到终端上,那么他们有什么区别呢?让我们来看个题目:

问题:下面程序的输出是什么?(intel笔试2011)

int main(){
fprintf(stdout,"Hello ");
fprintf(stderr,"World!");
return0;
}

解答:这段代码的输出是什么呢?你可以快速的将代码敲入你电脑上(当然,拷贝更快),然后发现输出是

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");

这3句效果不是一样啊,有什么区别吗?

有区别。 
stdout -- 标准输出设备 (printf("..")) 同 stdout。 
stderr -- 标准错误输出设备 
两者默认向屏幕输出。 
但如果用转向标准输出到磁盘文件,则可看出两者区别。stdout输出到磁盘文件,stderr在屏幕。

例如: 
my.exe 
Can't open it! 
Can't open it! 
Can't open it!

转向标准输出到磁盘文件tmp.txt 
my.exe > tmp.txt 
Can't open it!

用TYPE 看 tmp.txt的内容: 
TYPE tmp.txt 
Can't open it! 
Can't open it!

总结:注意1,点,2点即可!

https://www.cnblogs.com/zhangyabin---acm/p/3203745.html

转载于:https://www.cnblogs.com/mingyunrangwozoudaoxianzai/p/10774437.html

stderr和stdout详细解说相关推荐

  1. Qt工作笔记-自定义打印及存日志及stderr转stdout(Linux程序调试技巧,提高开发效率)

    如下的代码: #include <QCoreApplication> #include <QDebug> #include <QByteArray> #includ ...

  2. 在Bash中重定向stderr和stdout

    我想将一个进程的stdout和stderr都重定向到一个文件. 我该如何在Bash中做到这一点? #1楼 对于tcsh,我必须使用以下命令: command >& file 如果使用co ...

  3. stderr和stdout区别

    stdout是默认向到屏幕,但是可以将标准输出重定向到磁盘文件 有区别.  stdout -- 标准输出设备 (printf("..")) 同 stdout.  stderr -- ...

  4. c中的stderr、stdout、stdin差别

    linux下,一切皆文件.在所有的文件描述符中,有三个是已经被固定占用了,分别是stdin(文件描述符为0).stdout(文件描述符为1).stderr(文件描述符为2).stdin是标准输入,默认 ...

  5. nohup: redirecting stderr to stdout

    问题: 执行kafka启动脚本时,出现如下提示. [root@node03 bin]# sh start.sh nohup: redirecting stderr to stdout 脚本内容: [r ...

  6. stderr和stdout(printf、fprintf、sprintf)(转)

    先区分一下:printf,sprintf,fprintf. 1,printf就是标准输出,在屏幕上打印出一段字符串来. 2,sprintf就是把格式化的数据写入到某个字符串中.返回值字符串的长度. 3 ...

  7. python stdout stderr 一起输出_python – 使用subprocess.Popen()时,stderr和stdout没有输出

    我正在使用 Python来自动化SVN提交,我想将SVN命令的输出写入日志文件.我有的代码可以使SVN运行,但问题是在成功提交时,子进程调用不会返回我的日志的任何输出. 当我手动运行SVN时,通过比较 ...

  8. Unix——fprintf与stderr、stdout的使用

    先看一段程序 // 保存为fprintf.c #include <stdio.h>int main(){fprintf(stderr,"stderr on screen\n&qu ...

  9. stderr 和 stdout有什么区别?

    最近看程序,经常碰到stderr, 在一般的小程序中很少用到这些,查阅了很多网上资料,没太看懂,我们先来看一下程序: #include<stdio.h>int main() {fprint ...

最新文章

  1. 一、预备知识―程序的内存分配
  2. 下载CentOS7、CentOS8镜像(ISO)
  3. 什么样的域名利于网站SEO优化?
  4. Cascade R-CNN的一些记录
  5. java 二进制文件拷贝_Java复制二进制文件
  6. Netflix如何节省92%视频编码成本?
  7. 变量命名 – 匈利亚命名法则 - C语言零基础入门教程
  8. 漫画:什么是 “模因” ?
  9. java小白会有那些工作_Java小白找工作与学习的第二天
  10. Linux 的 ‘sort’命令的14个有用的范例(一)
  11. jenkins配置邮件通知
  12. 结合ENVI与ArcMAP的NC数据处理(均值、最大最小值等)心得记录
  13. 生产计划排程、车间工序排程、APS高级计划与排程
  14. 行路难PPT计算机考试,《行路难》公开课.ppt
  15. 激光雷达是什么?为什么移动机器人必不可少?
  16. 复杂业务系统的架构设计思路
  17. ESP8266 下载报错please check partition type 6 addr:3fd000 len:3000
  18. 脉冲神经网络原理及应用,脉冲神经网络结构特点
  19. Oracle报表计算合计函数ROLLUP
  20. 奇瑞新能源小蚂蚁,一款实用好看的居家小车

热门文章

  1. 恋上数据结构完整笔记(第1季 + 第2季)
  2. 从零开始带你部署springboot项目到ubuntu服务器05
  3. 帆软实现单元格可编辑内容并保存
  4. php sphinx mysql_windows7使用Sphinx+PHP+MySQL详细介绍
  5. python cryptography key加密_python3利用cryptography 进行加密和解密
  6. 判断一个点是否在矩形内部_矩形、圆形泄水管规格型号优势
  7. python网络监控程序_python linux监控程序
  8. eclipse 64位_Eclipse安装教程
  9. 加入rtp组播_耗时10+小时撰写 带你系统认识组播 收藏这些概念
  10. 【基础数论】欧拉函数