C语言被忽视的一些小东西!C语言基础教程之错误处理。

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

所以,C 程序员可以通过检查返回值,然后根据返回值决定采取哪种适当的动作。开发人员应该在程序初始化时,把 errno 设置为 0,这是一种良好的编程习惯。0 值表示程序中没有错误。

errno、perror() 和 strerror()

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

perror()函数显示您传给它的字符串,后跟一个冒号、一个空格和当前 errno 值的文本表示形式。

strerror()函数,返回一个指针,指针指向当前 errno 值的文本表示形式。

让我们来模拟一种错误情况,尝试打开一个不存在的文件。您可以使用多种方式来输出错误消息,在这里我们使用函数来演示用法。另外有一点需要注意,您应该使用stderr文件流来输出所有的错误。

当上面的代码被编译和执行时,它会产生下列结果:

错误号: 2

通过 perror 输出错误: No such file or directory

打开文件错误: No such file or directory

被零除的错误

在进行除法运算时,如果不检查除数是否为零,则会导致一个运行时错误。为了避免这种情况发生,下面的代码在进行除法运算前会先检查除数是否为零:

当上面的代码被编译和执行时,它会产生下列结果:除数为 0 退出运行...

程序退出状态

通常情况下,程序成功执行完一个操作正常退出的时候会带有值 EXIT_SUCCESS。在这里,EXIT_SUCCESS 是宏,它被定义为 0。

如果程序中存在一种错误情况,当您退出程序时,会带有状态值 EXIT_FAILURE,被定义为 -1。所以,上面的程序可以写成:

当上面的代码被编译和执行时,它会产生下列结果:

quotient 变量的值为 : 4

学习C/C++编程知识,想要成为一个更加优秀的程序员,或者你学习C/C++的时候有难度,可以关注+私信小编【C/C++编程】笔者的C语言C++零基础编程学习圈,里面不仅有学习视频和文件资料,还有更多志同道合的朋友,欢迎转行也学习编程的伙伴,和大家一起交流成长会比自己琢磨更快哦!

c语言直接退出程序_C/C++编程笔记:C语言错误处理方法!如何更好地处理程序的错误?...相关推荐

  1. c++ 动态分配数组_C/C++编程笔记:「C语言指针」民间解读版本

    相信很多同学在初学C语言时候,都会遇到遇到一个问题:指针,永远的神! 好消息,这个痛点将会在这篇文章得到解决,妈妈再也不用担心我的学习了! 一说指针,第一反应,指针是一种数据类型. c语言学习,重点就 ...

  2. c++ 小游戏_C/C++编程笔记:C语言写推箱子小游戏,大一学习C语言练手项目

    C语言,作为大多数人的第一门编程语言,重要性不言而喻,很多编程习惯,逻辑方式在此时就已经形成了.这个是我在大一学习 C语言 后写的推箱子小游戏,自己的逻辑能力得到了提升,在这里同大家分享这个推箱子小游 ...

  3. c语言求阶乘和的流程图_C/C++编程笔记:C语言 rand() 随机函数,深入解析程序随机数!...

    各种编程语言返回的随机数(确切地说是伪随机数)实际上都是根据递推公式计算的一组数值,当序列足够长,这组数值近似满足均匀分布. C的标准函数库提供一随机数生成器rand(定义在stdlib.h),能返回 ...

  4. visual c++ 6.0原版_C/C++编程笔记:C语言函数指针的理解与使用,就是这么简单明了!...

    1.函数指针的定义 顾名思义,函数指针就是函数的指针.它是一个指针,指向一个函数.看例子: 看看上面三个表达式分别是什么意思? C)这很容易,fun3是函数名,p1,p2是参数,其类型为char *型 ...

  5. c++for循环求最大公约数_C/C++编程笔记:C语言 for 循环精讲!实例讲解带你吃透...

    在循环入口处定义循环三要素,循环条件为真时执行循环体,先判断再循环. 语法 C++中 for 循环的语法为: for (init; condition; increment) { statement( ...

  6. c 获取char*的长度_C/C++编程笔记:C语言字符串比较函数,超详细,值得收藏!...

    前方干货准备!!! void *memset(void *dest, int c, size_t count); 将dest前面count个字符置为字符c. 返回dest的值. void *memmo ...

  7. status c语言_C/C++编程笔记:C语言编程风格个人总结,初学小白可借鉴

    总结一下我个人的编程风格及这样做的原因吧,其实是为了给实验室写一个统一的C语言编程规范才写的.首先声明,我下面提到的编程规范,是自己给自己定的,不是c语言里面规定的. 一件事情,做成和做好中间可能隔了 ...

  8. c++入门代码_C/C++编程笔记:C语言入门题之正倒金字塔,正反三角形代码详解

    其实学编程关键是学习其思想,如果你精通了一门,再去学其他的时候也很容易上手.C不会过时的,尤其是在unix.linux操作平台上,学好C是必须的. C跟C++在很多方面也是兼容的,c是c++的基础. ...

  9. c 获取char*的长度_C/C++编程笔记:C语言字符串比较函数,超详细,值得收藏

    void *memset(void *dest, int c, size_t count); 将dest前面count个字符置为字符c. 返回dest的值. void *memmove(void *d ...

最新文章

  1. subplot subplots绘制子图
  2. Java实现二维码QRCode的编码和解码
  3. leetcode算法题--机器人的运动范围
  4. java创建对象的过程_Java创建对象的过程
  5. 十六、深入Python字符串
  6. python计算定积分_python编程通过蒙特卡洛法计算定积分详解
  7. ActiveMQ专题2: 持久化
  8. 【ElasticSearch 学习笔记】Java API
  9. [VB]BMP转JPG
  10. mysql 5.7 多线程主从复制_Mysql 5.7从节点配置多线程主从复制的方法详解
  11. Scrum Meeting---Ten(2015-11-5)
  12. 阿里云服务器如何快速搭建Docker环境
  13. Android使用google breakpad之minidump_stackwalk
  14. Win10系统解决图片打开方式没有照片查看器
  15. mysql健康档案管理系统_益康居民健康档案管理系统(网络版)
  16. 面对疫情,大学生如何保持良好的心理状态
  17. VC++ 中主线程等待子线程结束的方法
  18. PyCharm中的问题记录:failed to sync ide settings. click to sync
  19. 根据json 动态生成页面——问卷页面
  20. linux打开笔记本摄像头

热门文章

  1. java positive,Java DecimalStyle withPositiveSign()用法及代码示例
  2. 自制导纳信号发生器 [原创cnblogs.com/helesheng]
  3. 排序之快速排序(递归)
  4. Redis在CentOS 7上的安装部署
  5. Android 核心组件 Activity 之上
  6. SharePoint 2013连接非默认端口的SQL Server
  7. oracle修改用户密码
  8. 杂谈--穷人和富人的区别(觉得很有道理,需要反思自己的日常行为)
  9. lamda表达式修改数据_正则表达式学习教程
  10. windows下release模式调试某行代码无法中断