13.2.6 错误处理

13.2.6  错误处理

在进行文件操作的过程中可能会因各种原因而失败,错误信息将以代码的形式保存在系统变量errno中。很多函数通过改变errno变量的值输出标准错误信息编码,这些错误信息被保存在头文件errno.h内。

进行错误处理的函数有两个,第一个是本书10.8节所介绍过的sterror()函数,该函数的作用是根据标准错误信息编码在映射表中查询相关字符串,并将该字符串的指针返回给调用者。另一个函数是perror(),该函数内部已经调用了sterror()函数,它的作用是将标准错误信息字符串输出到终端上,并为其增加一个说明。如下例所示:

 

perror("文件操作");                      // 如果收到错误信息,则输出

 

将该语句放在文件操作函数失败时执行的代码块中,那么它就能输出错误信息。例如无法打开一个文件,它的输出结果可能是:

 

文件操作: No such file or directory

%注意:因为很多函数都是用errno变量,当另一个函数操作完成后可能会改变该变量的值。所以要获得正确的错误信息,应该将取得errno变量值的语句或sterror()函数放在例出错语句最近的位置。

写3.2 编程题 2试题名称:单位转换时间限制:1.0 s内存限制:128.0 MB3.2.1 问题描述杨这周的数学作业是做单位转换,喜欢编程的杨决定编程帮他解决这些问题。杨只学了长度单位和重量单位,具体来说:长度单位包括千( km )、( m )、毫( mm ),它们之间的关系是: 。重量单位包括千克( kg )、克( g )、毫克( mg ),它们之间的关系是: 。杨的作业只涉及将更的单位转换为更的单位,也就是说,杨的作业只会包含如下题型:转换为毫,千转换为毫,千转换为,克转换为毫克,千克转换为毫克,千克转换为克。现在,请你帮忙完成单位转换的程序。3.2.2 输入描述输的第为个整数 ,表题数量。接下来 ,每个字符串,表转换单位的题,格式为 x 单位1 = ? 单位2 。其中, x 为个不超过的负整数, 单位1 和 单位2 分别为两个单位的英缩写,保证它们都是长度单位或都是重量单位,且 单位1 单位2 更。例如,如果题需要你将 转换为 ,则输为 1 km = ? mm 。保证 。3.2.3 输出描述输出 ,依次输出所有题的答案,输出时,只需要将输中的 ? 代答案,其余部分字不差地输出即可。由于杨的题只涉及将更的单位转换为更的单位,并且输的 x 是整数,因此答案定也是整数。例如,如果题需要你将 转换为 ,输为 1 km = ? mm ,则你需要输出 1 km = 1000000 mm 。3.2.4 特别提醒在常规程序中,输、输出时提供提是好习惯。但在本场考试中,由于系统限定,请不要在输、输出中附带任何提信息。输格式将严格按照题要求,且你的输出必须和标准答案完全致才能得分,请在提交前仔细检查。3.2.5 样例输入 13.2.6 样例输出 13.2.7 样例输入 23.2.8 样例输出 221 km = ? mm1 m = ? mm1231 km = 1000000 mm1 m = 1000 mm125100 m = ? mm1000 km = ? m20 kg = ? g200 g = ? mg0 kg = ? mg123456100 m = 100000 mm1000 km = 1000000 m20 kg = 20000 g200 g = 200000 mg0 kg = 0 mg
09-08
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值