C语言在线运行

版本:

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

                        
以下是用户最新保存的代码
难崩睡觉觉无数玩家 发布于:2024-04-18 14:15 //=========数据判读的处理函数=========== //===================================== #include <stdio.h> int main () { int j=10,k=20,i=30; //JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 if(i>100) k=j; else k=i; printf("%d\n",i); printf("%d\n",j); printf("%d\n",k); printf("Hello world! - c.jsrun.net."); return 0; } 发布于:2024-04-17 22:56 请使用顺序栈,实现任意10进制数的m进制数输出。 要求:输入为十进制整数n,输出为m进制的字符串 发布于:2024-04-17 18:45 C语言代码 发布于:2024-04-17 17:05 22.函数的定义及作用 发布于:2024-04-17 10:24 求完数的错误方法 发布于:2024-04-16 21:18 //求a+aa+aaa+aaaa+aaaaa值 发布于:2024-04-16 20:29 水仙花数的求法 发布于:2024-04-16 20:04 汉诺塔编码 发布于:2024-04-14 17:17 选择排序算法 发布于:2024-04-14 13:10 一种实现f(x)函数的代码 发布于:2024-04-13 22:23 链表实现字符输入输出 发布于:2024-04-12 09:15 字符串功能 发布于:2024-04-12 00:55 哈夫曼编码的实现 发布于:2024-04-11 23:08 输入两位正整数,x,y ,x的十位是z的千位x的个位是z的十位,y的十位是z的个位,y的个位是z的百位 发布于:2024-04-11 22:00 链表实现多项式相加减 发布于:2024-04-12 09:30 学习c语言代码 发布于:2024-04-11 20:18 计算每年的母亲节 发布于:2024-04-11 17:19 用switch进行四则运算 发布于:2024-04-11 16:37 求阿姆斯特朗数B 发布于:2024-04-11 15:21 strncmp和sscanf的使用 发布于:2024-04-11 11:28 笔记(二维数组) 发布于:2024-04-10 11:01 18.break语句 发布于:2024-04-10 10:06 19.continue语句 发布于:2024-04-10 10:21 17.循环结构 for语句 发布于:2024-04-10 09:48 16.循环结构 do while语句 发布于:2024-04-10 09:39 15.循环结构 while语句 发布于:2024-04-10 09:19 14.选择结果程序 switch语句 发布于:2024-04-10 09:08 水仙花数,3位数,其各位数立方等于该数本身 发布于:2024-04-09 23:48 求pi的值 发布于:2024-04-09 23:41 /*C语言显示99乘法表*/ 发布于:2024-04-09 23:10 W I just got 发布于:2024-04-09 14:31 协议软件工程师笔试题 发布于:2024-04-16 14:42 函数求和代码 发布于:2024-04-07 16:47 指针free之后,需要置NULL 发布于:2024-04-07 14:51 ABC 的值 发布于:2024-04-08 22:35 数据结构实验二 发布于:2024-04-06 20:52 从键盘输入10个数,统计非负数的个数,并计算非负数的和 发布于:2024-04-06 18:53 Demo for zzy 发布于:2024-04-06 00:09 递归逆序输出字符串 发布于:2024-04-03 23:32 求1000内的完数 完数:一个属恰好等于它的因子之和 发布于:2024-04-03 16:44 数据结构24.4.3 发布于:2024-04-03 15:15 ronggon class 4 发布于:2024-04-03 14:37 笔记(程序结构) 发布于:2024-04-03 11:04 笔记(类型转换) 发布于:2024-04-03 10:34 12.类型转换 发布于:2024-04-03 10:28 笔记(三目运算) 发布于:2024-04-03 09:49 笔记(逗号运算) 发布于:2024-04-03 09:38 笔记(逻辑运算) 发布于:2024-04-03 09:32 笔记(关系运算) 发布于:2024-04-03 09:04 [更多]
显示目录

错误处理



学习嵌入式的绝佳套件,esp8266开源小电视成品,比自己去买开发板+屏幕还要便宜,省去了焊接不当搞坏的风险。 蜂鸣版+触控升级仅36元,更强的硬件、价格全网最低。

点击购买 固件广场

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