欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

error,perror,strerror,fprintf....md

程序员文章站 2022-03-25 08:52:07
...
  • error表示错误代码, 记录系统的最后一次错误代码, 代码是一个int型的值, 在error.h中定义, 系统每一次出错都会对应一个出错代码

  • stderr 是linux的(unix)的标准错误输出, Linux中的一个进程启动时候, 都会打开三个文件指针

    • stdin 标准输入 0(文件描述符)
    • stdout 标准输出 1(文件描述符)
    • stderr 标准出错处理 2(…)

    ​ 分别指向标准输入, 标准输出, 标准错误输出. 通常结合fprintf使用

    fprintf(stderr,"error message");
    
  • perror要包含有头文件stdio.h是错误输出函数, 在标准输出设备上输出一个错误信息, 是对errno的封装.

    perror("fun:");//输出显示为
    //fun:错误信息后(加一个换行符)
    
  • stderror要包含有文件string.h是通过参数errno来返回错误信息, 注意stderror返回的是一个错误消息的字符串, 是给用户处理的错误信息

测试效果代码

#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
 
int main(int argc[],char *argv[])
 
{
	malloc(1);
	printf("errno = %d\n",errno);
	fprintf(stderr,"stderr\n");
	perror("perror");
	printf("strerror: %s\n",strerror(errno));
 
	malloc(-1);
	printf("errno = %d\n",errno);
	fprintf(stderr,"stderr\n");
	perror("perror");
	printf("strerror: %s\n",strerror(errno));
 
 
	return 0;
}
  • 重定向的概念

    • 把某应用的操作对象换成别的

      比如说我这个程序原来是从键盘接受信息, 现在是从一个.ini文件接受信息, 本来输出显示在屏幕上我输出到某个文本保存起来

    • 重定向方法一:

      如果你手上有源代码, 在开头把输入屏幕重定向到out.txt就可以达到这个效果(追加形式打开)

      FILE* ST;
      ST = freopen("out.txt","a+",stdout);
      
    • 方法二:

      如果没有源代码, 只有可执行文件, 没有修改的机会, 那么可以使用管道符.

      在Linux测试如下

      //test.c
      #include <stdio.h>
      
      int main()
      {
          int i ;
          scanf("%d",&i);
          printf("%d\n",i);
          return 0;
      }
      
      /*
      编译通过以后创建文件input.txt
      键入: 123  
      保存退出
      在命令行输入: ./a.out < input.txt >>out.txt
      查看out.txt的内容
      cat out.txt   //输出123
      */
      
相关标签: 重定向