fopen出错问题

本文介绍了fopen函数的功能和参数,重点分析了文件打开失败的常见原因,包括路径问题、权限问题、句柄泄露以及如何通过errno进行错误定位。提供了解决fopen错误的方法,强调正确使用errno记录错误代码的重要性。
摘要由CSDN通过智能技术生成

函数介绍:

函数原型 FILE * fopen(const char * path,const char * mode); 
函数功能 打开一个文件
参数:   path [in] 名称   mode[in] 打开方式
返回值:文件顺利打开后,指向该流的文件指针就会被返回。如果文件打开失败则返回NULL,并把错误代码存在errno 中。 
注:这里只是简单介绍下函数功能和参数,具体参数意思此处不分析。

原因分析及方法

1 参数path问题, 路径不对fopen就会是返回失败。
分析:首先查看path文件是否存在,其次检查path的路径相对路径还是绝对路径?如果是相对路径再检查是否当前进程的目录会切换了,软件找不到文件了.
如 相对路径 FILE *fp = fopen("./test/1.txt", "r"); 
  绝对路径 FILE *fp = fopen("/mnt/text/1.txt", "r");
假如确定参数path没问题后,则可以排除文件不存在的路径问题。此时可以打印错误码errno来定位问题(这个后面介绍)。

2 参数mode问题,mode控制文件打开的方式,如果用户打开的方式超出了当前用户的权限,那么fopen也会返回失败,
此时应该检查当前用户的操作权限,也可以打印错误码errno来定位问题
如果当前用户仅仅只有读的权限而以读写的方式打开文件 FILE *fp = fopen("./test/1.txt", "W+")

3 检查程序中是否有句柄泄露的可能即频繁的调用fopen而没有fclose,这种情况的表象就是

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值