b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

Fopen函数失败原因分析与分析方法

电脑杂谈  发布时间:2020-06-11 19:05:43  来源:网络整理

c方法返回多个值_fopen与fopen-s_fopen返回值

最近分析了一个偶然的问题,发生的可能性特别低,并且该问题仍在分析中. 总结所分析的知识,然后继续添加.

调用Lua require函数时,该代码具有异常. 通过查看require的源代码跟踪,发现该函数的fopen函数返回了无法打开文件的异常,

以下是使用fopen打开文件时出错的可能原因的总结,也许它不完整fopen返回值,欢迎添加.

功能原型FILE * fopen(const char * path,const char * mode);

函数功能打开文件

参数: 路径[输入]名称模式[输入]的打开方法

返回值: 成功打开文件后fopen返回值,将返回指向流的文件指针. 如果文件打开失败,则返回NULL并将错误代码存储在errno中.

注意: 这只是对该功能和功能参数的简要介绍. 此处不分析具体参数的含义.

1参数路径错误. 如果路径不正确,则fopen将返回失败.

fopen返回值_c方法返回多个值_fopen与fopen-s

分析: 首先检查路径文件是否存在,然后检查路径是相对路径还是绝对路径. 如果是相对路径,请检查是否将切换当前进程的目录,并且软件找不到该文件.

例如,相对路径FILE * fp = fopen(“ ./ test / 1.txt”,“ r”);

绝对路径文件* fp = fopen(“ / mnt / text / 1.txt”,“ r”);

如果确定参数路径正确,则可以排除文件不存在的路径问题. 此时,您可以打印错误代码errno来定位问题(稍后介绍).

2参数模式问题,模式控制文件的打开方式,如果用户以超出当前用户权限的方式打开文件,则fopen也将返回失败,

这时,您应该检查当前用户的操作权限,或者可以打印错误代码errno来查找问题

如果当前用户仅具有读取权限,并且通过读写FILE * fp = fopen(“ ./ test / 1.txt”,“ W +”)

来打开文件

3检查程序中是否存在句柄泄漏的可能性,即频繁调用fopen而没有fclose,这种情况的出现是它可以在前一个开始时成功打开

fopen返回值_c方法返回多个值_fopen与fopen-s

一段时间后,打开方式失败,检查路径和权限,然后检查句柄是否泄漏没有问题. 通常,Linux支持多达1000个

手柄,如果打开得太多,它将无法打开,其他手柄将不会打开

4通过检查errno分析定位问题. errno是一个int值,不需要在errno.h中定义它.

您可以通过strerror(errno)查看错误信息,errno是调试程序的重要方法.

注意: errno是记录系统的最后一个错误代码.

例如

FILE * fp = NULL;

if((fp = fopen(“ ./ test / 1.txt”,“ r”))== NULL)

{

c方法返回多个值_fopen返回值_fopen与fopen-s

printf(“打开失败错误号=%d原因=%s \ n”,错误号,strerrno(错误号));

}

应该指出的是,以这种方式添加printf时存在问题,那么errno分支是记录系统的最后一个错误代码,它可能无法获得我们想要的错误代码,但会产生误导作用

最好的方法是

FILE * fp = NULL;

int errNum = 0;

if((fp = fopen(“ ./ test / 1.txt”,“ r”))== NULL)

{

errNum = errno;

c方法返回多个值_fopen返回值_fopen与fopen-s

printf(“打开失败errno =%d原因=%s \ n”,errNum,strerrno(errNum));

}

常见的errno错误代码如下:

#define EPERM 1 / *不允许操作* /

#define ENOENT 2 / *没有这样的文件或目录* /

#define ESRCH 3 / *没有这样的过程* /

#define EIO 5 / * I / O错误* /

#define ENXIO 6 / *没有这样的设备或地址* /

#define E2BIG 7 / *参数列表太长* /

#define ENOEXEC 8 / *执行格式错误* /

#define EBADF 9 / *错误的文件号* /

#define ECHILD 10 / *没有子进程* /

有关更多信息,请搜索,在此处进行分析,如果发现需要添加的内容,请进行跟进...


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-242093-1.html

    相关阅读
      发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

      热点图片
      拼命载入中...