语法:
#include <stdio.h>
void perror(char const* tag);
功能:在标准错误设备商打印最近一次函数调用的错误信息。
参数:tag,用户自己定制的提示内容。输出时,会自动在提示内容和错误信息之间添加冒号进行分隔。
示例代码:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
int main(){
void* p = malloc(0xffffffffffff);
if (p == NULL){
fprintf(stderr, "malloc error no: %d\n", errno);
fprintf(stderr, "malloc error info: %s\n", strerror(errno));
perror("malloc error");
return -1;
}
return 0;
}
代码分析:
- 引入头文件依赖:
- 标准输入输出流:
#include <stdio.h>
- 获取错误信息:
#include <string.h>
,strerror通过这个头文件获取 - 文件流:
#include <stdlib.h>
,fprintf通过这个头文件获取 - 错误编号:
#include <errno.h>
,errno这个错误常量编号通过这个头文件获取
- 标准输入输出流:
- 申请内存:
void* p = malloc(0xffffffffffff);
,这里我们申请的内存非常巨大,在大部分电脑上都会出错 - 判断内存地址是否为空:
if (p == NULL){
- 打印错误编号:
fprintf(stderr, "malloc error no: %d\n", errno);
- 打印错误信息:
fprintf(stderr, "malloc error info: %s\n", strerror(errno));
- 打印错误信息:
perror("malloc error");
- 打印错误编号:
输出:
malloc error no: 12
malloc error info: Cannot allocate memory
malloc error: Cannot allocate memory