C语言在线运行

版本:
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
2. 线性计数排序的设计、分析与实现: 发布于:2023-12-04 15:39 时空权衡 1.计数排序的设计、分析与实现 发布于:2023-12-04 15:36 线性计数排序的设计、分析与实现 发布于:2023-12-04 08:53 线性排序测试 发布于:2023-12-04 08:51 计数排序的设计、分析与实现 发布于:2023-12-04 08:51 计数排序测试 发布于:2023-12-04 08:44 计数排序实现 发布于:2023-12-04 08:31 线性计数排序 发布于:2023-12-04 07:47 线性计数排序--可重复数据 发布于:2023-12-04 00:52 简单的ringbuffer 发布于:2023-12-03 23:42 线性排序代码 发布于:2023-12-03 23:33 计数排序的实现 发布于:2023-12-03 23:30 线性计数排序实验 发布于:2023-12-03 23:10 计数排序实验 发布于:2023-12-03 23:08 线性计数排序 发布于:2023-12-03 22:57 计数排序实现 发布于:2023-12-03 22:57 线性计数排序实现 发布于:2023-12-03 22:49 计数排序实现 发布于:2023-12-03 22:47 线性的基数排序 发布于:2023-12-03 22:47 计数排序实现 发布于:2023-12-03 22:47 实现计数排序以及线性计数排序 发布于:2023-12-03 22:30 线性记数排序 发布于:2023-12-03 22:22 计数字排序 发布于:2023-12-03 22:19 计数排序,时空权衡 发布于:2023-12-03 22:17 计数排序实现 发布于:2023-12-03 19:42 2. 线性计数排序 发布于:2023-12-03 19:39 线性计数排序 发布于:2023-12-03 19:39 Hello, RSA! 发布于:2023-12-03 17:15 线性计数排序 发布于:2023-12-03 17:11 计数排序。 发布于:2023-12-03 17:03 计数排序线性技术排序 发布于:2023-12-03 16:24 线性计数排序 发布于:2023-12-03 15:43 线性计数排序 发布于:2023-12-03 14:58 时空权衡实验 发布于:2023-12-02 21:59 2021年程序设计题4 发布于:2023-12-01 22:12 计数排序算法 发布于:2023-12-01 17:34 DGUSII 校验码 发布于:2023-12-01 15:44 数组添加头部字节 发布于:2023-12-01 14:00 创建函数调用 发布于:2023-11-30 17:33 一个数各位数字之和 发布于:2023-11-30 00:40 计数排序实现 发布于:2023-11-29 21:25 计数排序(基于比较) 发布于:2023-11-29 19:58 计数排序算法 发布于:2023-11-29 19:58 计数排序额 发布于:2023-11-29 20:28 计算日期 的程序 发布于:2023-12-01 16:35 堆排序实验 发布于:2023-11-29 17:58 这个是堆排序算法 发布于:2023-11-29 16:51 堆排序实现 发布于:2023-11-29 14:07 线性计数排序 发布于:2023-11-29 10:06 统计排序(非线性) 发布于:2023-11-29 09:28 [更多]
显示目录

错误处理



C 错误处理

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

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

errno、perror() 和 strerror()

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

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

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

#include <stdio.h>
#include <errno.h>
#include <string.h>

extern int errno ;

int main () {
   FILE * pf;
   int errnum;
   pf = fopen ("unexist.txt", "rb");
   if (pf == NULL)
   {
      errnum = errno;
      fprintf(stderr, "Value of errno: %d\n", errno);
      perror("Error printed by perror");
      fprintf(stderr, "Error opening file: %s\n", strerror( errnum ));
   }
   else
   {
      fclose (pf);
   }
   return 0;
}

尝试一下

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

Value of errno: 2
Error printed by perror: No such file or directory
Error opening file: No such file or directory

被零除的错误

在进行除法运算时,不检查除数是否为零,这是程序员编程时常见的问题,会导致一个运行时错误。

为了避免这种情况发生,下面的代码在进行除法运算前会先检查除数是否为零:

#include <stdio.h>
#include <stdlib.h>

main()
{
   int dividend = 20;
   int divisor = 0;
   int quotient;

   if( divisor == 0){
      fprintf(stderr, "Division by zero! Exiting...\n");
      exit(-1);
   }
   quotient = dividend / divisor;
   fprintf(stderr, "Value of quotient : %d\n", quotient );

   exit(0);
}

尝试一下

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

Division by zero! Exiting...

程序退出状态

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

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

#include <stdio.h>
#include <stdlib.h>

main()
{
   int dividend = 20;
   int divisor = 5;
   int quotient;

   if( divisor == 0){
      fprintf(stderr, "Division by zero! Exiting...\n");
      exit(EXIT_FAILURE);
   }
   quotient = dividend / divisor;
   fprintf(stderr, "Value of quotient : %d\n", quotient );

   exit(EXIT_SUCCESS);
}

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

Value of quotient : 4
由JSRUN为你提供的C语言在线运行、在线编译工具
        JSRUN提供的C语言 在线运行,C语言 在线运行工具,基于linux操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。