美文网首页C语言C算法&面试题轻松学习C语言、C++
C语言被忽视的一些小东西!C语言基础教程之错误处理

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

作者: 轻松学习C语言 | 来源:发表于2018-09-09 18:04 被阅读3次

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

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

  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++学习群:,567+625+668,不管你是小白还是大牛,小编我都欢迎,不定期分享干货,欢迎初学和进阶中的小伙伴。

  每天晚上20:00都会开直播给大家分享C/C++游戏编程学习知识和路线方法,群里会不定期更新最新的教程和学习方法,最后祝所有程序员都能够走上人生巅峰,让代码将梦想照进现实

相关文章

  • C语言基础教程之错误处理

    C语言被忽视的一些小东西!C语言基础教程之错误处理 C语言错误处理 C 语言不提供对错误处理的直接支持,但是作为一...

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

    C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据。在发生错误时,大...

  • C++入门篇

    C语言入门教程,C语言入门书籍《C语言小白变怪兽》_C语言中文网 C++入门教程,全套C++基础教程(已更新完毕)...

  • C语言基础教程之递归

    一文读懂C语言递归算法,C语言基础教程之递归 C语言递归 递归指的是在函数的定义中使用函数自身的方法。 从前有座山...

  • C语言基础教程之输入输出

    C语言与计算机的沟通必备,C语言基础教程之输入输出,简单交流 C语言输入&输出 当我们提到输入时,这意味着要向程序...

  • C语言基础教程之预定义和宏处理

    define看起来很炫酷!C语言基础教程之预处理和宏定义 C语言预处理器 C语言预处理器不是编译器的组成部分,但是...

  • C语言基础教程,C语言变量

    变量只不过是我们的程序可以操作的存储区域的名称。C中的每个变量都有一个特定的类型,它决定了变量内存的大小和布局; ...

  • C语言如何使用随机数?

    C语言如何使用随机数? 功能介绍推送一些C语言方面的知识,提供C语言/C++语言资料,讨论和学习C语言/C++编程...

  • C语言基础教程之运算符

    C语言内置运算符丰富到令人头皮发麻,C语言基础教程之运算符篇 C语言运算符 运算符是告诉编译器执行特定数学或逻辑函...

  • C语言基础教程之C语言概述

    C教程 C是贝尔电话实验室的Dennis M. Ritchie于1972年开发的一种通用的,程序性的,命令式的计算...

网友评论

    本文标题:C语言被忽视的一些小东西!C语言基础教程之错误处理

    本文链接:https://www.haomeiwen.com/subject/wvjdgftx.html