C语言在线运行

版本:

所属目录
点击了解高性能代码运行API
运行结果
教程手册
代码仓库
极速运行
终端运行
图形+终端

                        
以下是用户最新保存的代码
综合题1(注释版) 发布于:2025-11-20 16:49 (综合题1) 录入 N 个学生信息(学号、姓名、3 门课程成绩); 计算每个学生的平均分和总分; 按平均分降序排序并输出; 查找指定学号的学生信息(找到则输出,未找到提示 “无此学生”)。 发布于:2025-11-20 16:42 结构体,指针,函数,数组结合,计算多个学生信息及成绩平均值和最大平均值(综合)(优化) 发布于:2025-11-20 14:38 结构体,指针,函数,数组结合,计算多个学生信息及成绩平均值和最大平均值(综合) 发布于:2025-11-20 11:51 结构体(指针与函数) 发布于:2025-11-20 10:36 结构体(数组运用) 发布于:2025-11-20 09:53 结构体(示范) 发布于:2025-11-20 09:16 编写函数,用指针实现“不用临时变量的两数交换”和“数组排序(冒泡排序)”指针与函数的关系 完整版 发布于:2025-11-19 17:02 编写函数,用指针实现“不用临时变量的两数交换” 发布于:2025-11-19 16:59 指针与数组的简单三种用法(累加,自增,偏移) 发布于:2025-11-19 16:32 指针基础(换数) 发布于:2025-11-19 16:04 指针基础用法 发布于:2025-11-19 15:02 素数(函数版) 发布于:2025-11-19 14:52 素数(普通版本) 发布于:2025-11-19 14:44 斐波那契数列问题(生兔子,黄金分割比例) 发布于:2025-11-19 14:10 交换数组中的元素(指针,函数) 发布于:2025-11-19 10:04 字符串长度(指针,函数) 发布于:2025-11-19 09:33 # 前n项和计算 发布于:2025-11-18 20:15 C语言学习代码测试 发布于:2025-11-18 15:49 整数各位之和 发布于:2025-11-19 09:21 冒泡法十个字符大小排序 发布于:2025-11-18 11:49 冒泡排序范本 发布于:2025-11-18 14:10 定义函数分析字符串(*****难) 发布于:2025-11-18 10:51 使用函数求数组中的最大值最小值和平均数(难) 发布于:2025-11-18 09:37 KMP算法获取NEXT 发布于:2025-11-16 17:07 二维数组的各行各列的和以及总数和(以解,难) 发布于:2025-11-14 13:51 二维数组,每行最大值以及和 发布于:2025-11-14 12:54 数组中最大最小值 发布于:2025-11-14 11:17 数组的输入输出 发布于:2025-11-14 10:57 杨辉三角形(二维数组) 发布于:2025-11-14 10:50 派的近似值(难题)未理解 发布于:2025-11-13 22:21 输出最大 数 发布于:2025-11-13 21:44 九九乘法表 发布于:2025-11-13 21:31 最大公约数和最小公倍数 发布于:2025-11-13 17:10 加减交替累加和 发布于:2025-11-13 16:21 链表(线性表)的操作 发布于:2025-11-20 01:30 顺序表尾部添加元素 发布于:2025-11-12 02:22 初始化线性表 发布于:2025-11-07 13:53 List初始化 发布于:2025-11-07 13:40 模糊pid控制 发布于:2025-11-07 09:28 三个数换顺序 发布于:2025-11-19 14:12 Malloy函数的使用 发布于:2025-11-05 15:39 输入MAC,输出长度为10的由字母和数字(A-Z, a-z, 2-9)组成的随机字符串 发布于:2025-10-30 10:46 计算圆柱体体积 发布于:2025-10-30 08:38 签名数据提取 发布于:2025-10-29 16:32 算平均成绩和及格人数 发布于:2025-10-21 08:24 输入a,b,关于大小互换 发布于:2025-10-15 22:59 20251015教学日志 发布于:2025-10-15 09:07 c++的第一步 发布于:2025-10-12 17:10 数据结构联系 C语言基础 发布于:2025-10-04 00:00 [更多]
显示目录

错误处理



搭载国产梦丘操作系统,支持安装软件,在线编程可视化开发软件,无需配置开发环境

点击购买 梦丘固件

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操作系统环境提供线上编译和线上运行,具有运行快速,运行结果与常用开发、生产环境保持一致的特点。