首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

C语言编程—错误处理

C 语言不提供对错误处理的直接支持,但是作为一种系统编程语言,它以返回值的形式允许您访问底层数据。...在发生错误时,大多数的 C 或 UNIX 函数调用返回 1 或 NULL,同时会设置一个错误代码 errno,该错误代码是全局变量,表示在函数调用期间发生了错误。...您可以在 errno.h 头文件中找到各种各样的错误代码。 所以,C 程序员可以通过检查返回值,然后根据返回值决定采取哪种适当的动作。...0 值表示程序中没有错误。 errno、perror() 和 strerror() C 语言提供了 perror() 和 strerror() 函数来显示与 errno 相关的文本消息。...strerror() 函数,返回一个指针,指针指向当前 errno 值的文本表示形式。 让我们来模拟一种错误情况,尝试打开一个不存在的文件。

13130
您找到你想要的搜索结果了吗?
是的
没有找到

C语言常见6种错误

C语言认为大写字母和小写字母是两个不同的字符。习惯上,符号常量名用大写,变量名用小写表示。...3、忘记加分号 分号是C语句中不可缺少的一部分,语句末尾必须有分号。 x=1 y=2 编译时,编译程序在“x=1”后面没发现分号,就把下一行“y=2”也作为上一行语句的一部分,这就会出现语法错误。...改错时,有时在被指出有错的一行中未发现错误,就需要看一下上一行是否漏掉了分号。 4、scanf函数输入时忘记加地址运算符“&” int a,b; scanf(“%d%d”,a,b); 这是不合法的。...这种错误尤其需要注意。 6.switch语句中漏写break语句 例如:根据考试成绩的等级打印出百分制数段。...因此,当grade值为A时,printf函数在执行完第一个语句后接着执行第二、三、四、五个printf函数语句。正确写法应在每个分支后再加上“break;”。

1.2K3129

c语言的常见错误和盲区

一、前置++与后置++ 我们先看两个例题来感受下 第一个先来后置++,大体使用上我认为后置++的频率比前置要高 后置++ 先执行表达式 等表达式执行完后 再++ 也就是先使用 后++ 这里面...b=a++ 可以拆分成 b=a a=a+1 而来到c的时候 a的值已经加1了 即c=11 b=++a 可以拆分成 a=a+1 b=a 即b=11 这里是先加加 在使用...c=a a的值已经在上面加1了 即c=11 二、static的使用 1.修饰局部变量 结果不难看出是 2 2 2 2 2 a属于局部变量在栈区 函数使用后就会被销毁 所以每次调用 a...这里使用static修饰后报错 函数也是具有外部链接属性的 其他源文件使用声明就可以 但是被static修饰后 就变成了内部连接属性 只能在本身的源文件中使用了 4.总结 具有外部链接属性的一个程序中的其他源文件都可以使用

73720

c语言编程常见错误集锦 【上】

C语言区分大小写。习惯上,符号常量名用大写,变量名用小写表示,以增加可读性。 ? 2.忽略变量类型,进行不合法运算 %是求余运算,得到a/b的整余数。...C语言规定以“\0”作为字符串结束标志,它是系统自动加上的,所以字符常量“b”其实包含两个字符'b' '\0',而把它赋给一个字符变量是不行的。 ?...4.忽略了“=”和“==”的区别 C语言中,“=”是赋值运算符,“==”是关系运算符。在此代码中,前者是进行比较,后者是进行赋值。 ?...5.忘记加分号 几乎在所有编程语言中,都是用“;”代表一句或多句语句的结束。 ? 6.多加分号 ? ? ? 7.忘加地址运算符“&” scanf函数的作用是:按照a在内存中的地址将a的值存进去。...9.输入字符的格式与要求不一致 在用“%c”格式输入字符时,空格字符和转义字符都作为有效字符输入。 ? 如输入:a b c 字符“a”赋值给c1,字符“ ”赋值给c2,“b”赋值给c3。

1.3K10

c语言 switch错误用法,C语言switch语句的详细用法

C语言还为多分支选择提供了另一个switch语句,其一般形式为: 开关(表达式){ 案例常量表达式1: 语句1; 案例常量表达式2: 语句2; … 条件常量表达式n: 语句n; 默认值: 语句n...但是在输入3之后,将执行情况3及以后的所有句子c语言 switch语句,并输出星期三及以后的所有单词. 这当然是不希望的. 为什么会这样?这仅反映了switch语句的功能....为避免上述情况,C语言还提供了一个break语句,专用于跳出switch语句. break语句仅具有关键字break,没有参数. 稍后将详细介绍....修改示例程序,在每个case语句之后添加一个break语句c语言 switch语句,以便在每次执行后可以跳出switch语句,以避免输出意外结果....n”); break; default:printf(“error\n”); } return 0; } 使用switch语句时,还应注意以下几点: 大小写之后的每个常量表达式的值不能相同,否则会发生错误

1.4K20

C语言笔记】分享一个C语言测试程序模板

前言 平时需要测试一些比较模糊的知识点,或则想要验证一些函数时,我们常常会建一个test.c文件,然后在这个文件里写我们的测试代码,测试完毕后常常会删掉该文件。...所以,我们可以编写一个专门用于测试的程序:(1)有菜单,可以通过菜单选择想要测试的函数;(2)有功能函数,把一些需要测试的功能封装成一个函数;(3)有测试函数,用于测试功能函数及一些知识点。...int *b); // 交换a,b的值最好的方法 // 测试函数声明 void test1(void); // 测试函数1:交换a,b的值 void test2(void); // 测试函数2:C语言预定义宏...{ case 1 : test1(); break; // 测试函数1:交换a,b的值 case 2 : test2(); break; // 测试函数2:C语言预定义宏...=================菜单==============================\n"); printf("[01]测试:交换a,b的值\n"); printf("[02]测试:C语言预定义宏

2.5K30

C语言一个简单实例

在信息化、智能化的世界里,可能很早很早 我们就听过许多IT类的名词,C语言也在其中,我们侃侃而谈,到底C程序是什么样子?...stdio.h文件是所有C语言编译器的标准部分,用来提供输入和输出的支持。 int main(void) /*主函数*/ C程序规定一个程序中有一个或多个函数,他们是C程序的基本模块。...但必须有且只有一个main函数。因为C程序的执行将从main函数开始,到main函数结束而停止。...return 0; C函数可以给它的使用者提供或返回一个数值。此时 我们只需理解这一句是用来满足C标准的要求而已。 } 结束的花括号,函数名后{ 和 }之间的部分称之为函数体。...好的,这就是我们的第一个简单的C程序以及其简单的介绍,希望大家好好理解并消化,更详细的讲解我们将会在下节展开!

61800

R语言和 Python —— 一个错误的分裂

在谈论RPy2之前,先来说一下“数据科学”,我要说的是“数据科学”是一个奇怪的词。因为几乎所有的科学都是“数据科学”。“无数据科学”则是完全不同的领域:哲学。...标签“数据”是指数据用于做什么并不重要,但这是错误的:它是难以且不可能做到科学的在没有得到数据的详细信息,得去了解系统的弱点并生产出来,智能、灵敏的应对非理想好数据。...一个良好的测量分布,异常值和噪声在噪声不同下一般有较容易理解的因素,而异常值通常是很少发生的,我们不能通过分布很好的理解。 对于处理这类事情R,Python和RPY的都是有用的工具。...,把R语言作为一个附属部分来学习,对于很多有丰富实验开发经验的分析师会使用R语言,当他们想把算法融入一个Python应用程序,并分发给用户时,他们也可以使用RPy2。...执行这种迁移的能力,而不离开R语言的概念模型是很有价值的,但从另一个角度来说,这也是一个限制,能够使用一个真正的通用编程语言,如:Python,来包装概念模型,并使得这个用户友好的应用程序有多种复杂的附加功能

970110

c语言有多难?一个新手刚学c语言的无奈

c语言作为很多新手小白入门的编程语言,很多新手都在学习的过程中流下了心酸的泪水。...刚开始运行的时候: 小编给大家推荐一个学习氛围超好的地方,C/C++交流企鹅裙:870963251!适合在校大学生,小白,想转行,想通过这个找工作的加入。...裙里有大量学习资料,有大神解答交流问题,每晚都有免费的直播课程 报错了,明明和书上的代码一模一样啊,一定是电脑出现问题了,在重启电脑确认电脑没有问题后,一个字符一个字符和书上对照,在看的眼花的时候,终于发现将...在改好了再运行的时候,发现,又报错了 于是再一次从头检查错在哪里,每一个字符都检查一遍,检查了几十遍,还是没有发现哪里不一样。...就这样,我的第一个程序:hello world完成了。

1.1K30

C语言逆向系列之破解一个简单的C语言程序

以下正文 本节教程将教大家如何去逆向分析和破解一个简单的C程序,需要大家熟悉基本的C语言语法,用到工具有:VC6、IDAPro、OD、UE等工具。 下面我们开始。...首先,我们用VC6写一个简单的密码验证程序,思路呢,很简单,就是让用户输入密码,然后用strcmp比较是否一样,一样的话提示正确,不正确的提示错误并重新输入。代码如下: ? 怎么样,简单吧!...在它们上面同一个处理块结尾最后注意有一句:jnz short loc_401073 这就是一句跳转语句,jnz意思为不相等则跳转的意思,后面带一个地址。所以灵感来了,直接在这里进行更改。...windows中PE程序一般都是0x00400000,节偏移可以用另一个工具找到。...OK,先记下来,一会用 这个时候,IDA可以退下了… 然后,启动另一个工具,loadPE,这个干啥用的呢?答:算算咱们代码在这个程序中的节偏移!如下: 先启动 ?

2.4K61

一个风骚的C语言操作

我把源代码再附上, main.c 如下: #include #include static char city_name[][20] = { #include...}; int main(void) { printf("%s", city_name[0]); } city.h 如下: "北京", "上海", "广州" 这段代码风骚的地方是在C语言里的数组里使用了一个...为此我把落了一层灰的《C和指针》书拿出来翻了一遍,楞是没找到说明。 最后在谷歌上找到一个人的回答: ? #必须是一行中的首个非空格字符,也就是说#前面可以有空格,但是不能有其他字符。...他觉得这个city.h写的不符合C规则,刚一看好像是这么回事,一般的头文件也没有这么写的,不过事实上没人规定头文件应该怎么写,只要包含后的c文件符合语法规则就可以。...最后会长同学感慨了一句:毕业找工作,精通c语言;两年后、掌握c语言;五年后,了解c语言。 我找了一下2013年自己找工作的简历: ? 他说的没错,我第一条写的就是精通C语言编程...。 ?

69950

C语言一个真实的故事)

曾经有一个简单又不失牛逼的小技巧,老师教的时候我没有珍惜,等到同事因为用了这个技巧升任总工才后悔莫及,如果上天再给我一次机会,我会对老师说:我要学!如果非要定个学习时间,我希望是:立马!...拓展: 这是一个真实的故事。 一个以往的学生就职东莞易事特,一家做新能源的上市公司,去年年底升任其部门总工(软件开发总工程师)工资升到1.2w,我说你工作半年这么NB了?...,例如: gcc main.c -o main -llife1 这样,程序运行所需要的吃饭(have_meal())、理发(hair_cut())的代码就跟main.c程序分离,达到可以给多个程序共用liblife.so...例如: gcc main.c -o main -llife2 这样很不方便,那怎样才能不修改源代码,也不需要重新编译main.c,直接让程序运行的时候动态地决定呢? 答案就是使用动态链接动态库。...在main.c中,这么写你的代码: ? 注意到上面的提薪大招了吗?

54420
领券