C语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据。在发生错误时,大多数的C或UNIX函数调用返回1或NULL,同时会设置一个错误代码errno,该错误代码是全局变量,表示在函数调用期间发生了错误。可以在<error.h>头文件中找到各种各样的错误代码。

C语言提供了perror()和strerror()函数来显示与errno相关的文本消息。

 #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h> extern int errno; int main() { int errnum;
FILE *pf = NULL;
pf = fopen("unexist.txt", "r");
if (pf == NULL) {
errnum = errno;
// 使用 stderr 文件流来输出所有的错误
fprintf(stderr, "Error number: %d\n", errno); // Error number: 2
// perror()函数显示您传给它的字符串,后跟一个冒号、一个空格和当前 errno 值的文本表示形式
perror("Print error by 'perror' function"); // Print error by 'perror' function: No such file or directory
// strerror()函数,返回一个指针,指针指向当前errno值的文本表示形式。
fprintf(stderr, "Error: %s\n", strerror(errnum)); // Error: No such file or directory
//退出程序时,会带有状态值EXIT_FAILURE,被定义为-1(stdlib.h)
printf("Exit failure.\n");
exit(EXIT_FAILURE);
} else {
fclose(pf);
//正常退出,会带有状态值EXIT_SUCCESS,被定义为0(stdlib.h)
printf("Exit success.\n");
exit(EXIT_SUCCESS);
}
}

C基础知识(11):错误处理的更多相关文章

  1. C# 篇基础知识11——泛型和集合

    .NET提供了一级功能强大的集合类,实现了多种不同类型的集合,可以根据实际用途选择恰当的集合类型. 除了数组 Array 类定义在System 命名空间中外,其他的集合类都定义在System.Coll ...

  2. JavaScript语言基础知识11

    JavaScript字符的比较. 在接下来的学习内容的开始,我们先来看一下alert()此功能,它是一个消息框. OK,接下来正式介绍代码: <HTML> <HEAD> < ...

  3. 11月10日上午ajax基础知识、用ajax做登录页面、用ajax验证用户名是否可用、ajax动态调用数据库

    1.ajax的基础知识 ajax是结合了jquery.php等几种技术延伸出来的综合运用的技术,不是新的内容.ajax也是写在<script>标签里面的. 如果使用ajax一定是要有1个处 ...

  4. iOS 阶段学习第11天笔记(OC基础知识)

    iOS学习(OC语言)知识点整理 一.OC基础知识 1)#import  用于导入头文件,预处理阶段加载引用,只加载一次. 2)OC 依赖于Foundation框架下的头文件Foundation.h, ...

  5. 【UE4 C++ 基础知识】<11>资源的同步加载与异步加载

    同步加载 同步加载会造成进程阻塞. FObjectFinder / FClassFinder 在构造函数加载 ConstructorHelpers::FObjectFinder Constructor ...

  6. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  7. Python开发【第二篇】:Python基础知识

    Python基础知识 一.初识基本数据类型 类型: int(整型) 在32位机器上,整数的位数为32位,取值范围为-2**31-2**31-1,即-2147483648-2147483647 在64位 ...

  8. IOS开发基础知识碎片-导航

    1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...

  9. 学习 shell脚本之前的基础知识

    转载自:http://www.92csz.com/study/linux/12.htm  学习 shell脚本之前的基础知识 日常的linux系统管理工作中必不可少的就是shell脚本,如果不会写sh ...

随机推荐

  1. UVA 1482 SG打表

    打出SG表来可以很容易的发现i为偶数时 SG[i]=i/2 i为奇数时 SG[i]=SG[i/2] #include<bits/stdc++.h> typedef long long ll ...

  2. hadoop/hbase/hive单机扩增slave

    原来只有一台机器,hadoop,hbase,hive都安装在一台机器上,现在又申请到一台机器,领导说做成主备, 要重新配置吗?还是原来的不动,把新增的机器做成slave,原来的当作master?网上找 ...

  3. mybatis总体分析

    Mybatis是一个半orp框架,说是半,也就是不完全是,还有很多地方是需要开发人员完成的.发现很多互联网公司使用Mybatis,而不是hibernate.应该是因为Mybatis不但有orp的优势, ...

  4. 第六章 组件 55 组件-使用components定义私有组件

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  5. eclipse+springboot+tomcat自带的部署

    最近在看微服务,然后整理了两个springboot.但执行都是内部main执行,想着后期应该会用到tomcat,大部分都是说的打成war包,然后部署到tomcat上. war包的方式就不说了,网上很多 ...

  6. asp.net操纵Oracle存储过程

    在bloginfo数据库中,利用用户名 system 密码 scy251147 选择超级管理员登陆  创建如下存储过程:  1 /*存储过程*/ 2 create or replace procedu ...

  7. jquery实现静态页面include

    最近在写一套前端页面,发现每个页面都复制一遍公共头.尾,十分不方便.于是就想能否也像PHP模板引擎一样,使用include引入公共文件,这便是接下来这段代码的意义.我们先来总结一下需求: 1.可以像使 ...

  8. springboot2.x下actuator模块

    一.简介    spring-boot-starter-actuator模块是一个spring提供的监控模块.我们在开运行发过程中,需要实时和定时监控服务的各项状态和可用性.Spring Boot的s ...

  9. 【leetcode】1276. Number of Burgers with No Waste of Ingredients

    题目如下: Given two integers tomatoSlices and cheeseSlices. The ingredients of different burgers are as ...

  10. 面向对象(oop)特征

    上课时老师不止一次和我们说过,面向对象是Java基础的重中之重!!所以一定要扎实基本功,代码都是呆子活,重要的是思想! 一般来说oop的三大特性是:封装.继承和多态,上次笔者看到有把抽象也归类其中,不 ...