首页 > 编程知识 正文

c编程入门自学教程,c编程源代码大全

时间:2023-05-03 13:01:29 阅读:262151 作者:4353

定义函数


       void perror(const char *s); perror ("open_port");


函数说明


        perror( ) 用来将上一个函数发生错误的原因输出到标准设备(stderr)。参数 s 所指的字符串会先打印出,后面再加上错误原因字符串。此错误原因依照全局变量errno 的值来决定要输出的字符串。
在库函数中有个errno变量,每个errno值对应着以字符串表示的错误类型。朴实的星月调用"某些"函数出错时,该函数已经重新设置了errno的值。perror函数只是将你输入的一些信息和现在的errno所对应的错误一起输出。

和异常处理的区别


        这里有一个疑问,c++已经有了异常处理,为什么还需要一个perror呢?原因是,在linux很多操作中,尤其是系统调用,文件操作中,如果没有正常执行完毕,是不会报错的,只会返回一个表示错误的描述符或句柄。例如,非常典型的是mkdir,fopen,socket等函数。这时候,我们只知道函数没有成功执行,但是问题出在哪里我们并无从得知。那么这些信息就消失了吗?并没有,这些信息被存储于一个全局变量errno中,每次有函数运行时,都会有一个信息被存入errno,即便这个函数成功运行,也会存入一个sucess进去(注意这些函数的信息是互相覆盖的)。那么我们发现函数没有成功运行,就需要perror函数调取函数没有成功运行的原因。

例如

#include <stdio.h>int main(){ FILE* fp; fp = fopen("/xxx/xxx", "r+"); if (NULL == fp) { perror("Error: "); } return 0;}

在这段程序中,打开文件的函数没有正确执行,我们想知道为什么没有执行,是其他进程占用还是不存在,于是就调用perror函数产看。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。