鱼C论坛

 找回密码
 立即注册
查看: 1509|回复: 5

文件操作函数 peeor(),ferror(); 的代码;

[复制链接]
发表于 2015-7-27 16:09:05 | 显示全部楼层 |阅读模式
8鱼币
文件错误相关的函数;
#include<stdio.h>
#include<stdlib.h>
#define E printf("未出现错误...debug...\n");
int main(void){
        FILE *fp=NULL;
        int Eor=0;E
        
        fp=fopen("/root/noexitfile","r+");E
                //Eor=ferror(fp);E        //这是第一个出现的问题,我想取得ferror()的返回值,但是似乎出了点问题。。
        printf("\a\t文件错误代码:%d ;\n",Eor);E
        if(fp==NULL){E
                perror("\a\t标准错误打印[/root/no-exit-file]");E        //perror()如果有多个文件被打开呢?只有1个错误的,那么它怎么去判断哪个出现错误?而我又怎么知道它打印的是哪个错误的文件?[也许...我还是没太理解 ==];
                //clearerr(fp);E        //这里能是不是文件打开失败的原因?
                exit(0);
        }
        fclose(fp);E        //当文件打开失败的时候,就不必要fclose()了吧?
return 0;
}

运行结果

运行结果

时间:2013年7月27日16:10:59;

最佳答案

查看完整内容

额。。楼主 好巧 又见到你了 一个一个问题说 1: //Eor=ferror(fp);E //这是第一个出现的问题,我想取得ferror()的返回值,但是似乎出了点问题。 ferror是测试文件读写期间获得的错误 而不是测试在打开期间的错误 换句话说ferror这个函数接受一个有效的文件流, 即一定是成功打开(非空)的文件流. 如果你给他一个空指针, 即打开失败的文件指针, 这个会直接报错 2: perror()如果有多个文件被打开呢?只有1个错 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-7-27 16:09:06 | 显示全部楼层
本帖最后由 ryxcaixia 于 2015-7-27 16:39 编辑

额。。楼主 好巧 又见到你了
一个一个问题说

1:
//Eor=ferror(fp);E        //这是第一个出现的问题,我想取得ferror()的返回值,但是似乎出了点问题。

1.png
ferror是测试文件读写期间获得的错误 而不是测试在打开期间的错误
换句话说ferror这个函数接受一个有效的文件流, 即一定是成功打开(非空)的文件流. 如果你给他一个空指针, 即打开失败的文件指针, 这个会直接报错

2:
perror()如果有多个文件被打开呢?只有1个错误的,那么它怎么去判断哪个出现错误?而我又怎么知道它打印的是哪个错误的文件?[也许...我还是没太理解 ==];
我理解你是想同时打开多个文件, 这个涉及到多线程操作要考虑进程调度, 以及对同一个文件读写, 这个在是很不稳定的事情 多个进程对同一个文件读也就罢了 因为每个进程项都有自己的文件指针偏移量 如果多个进程同时对一个文件写 就会很纠结
如果是打开多个文件, 在一个进程里没问题, 但是最好遵循以下原则
同时只存在一个打开的文件流, 操作完之后再操作下一个文件流

3:
如果一个文件打开失败, 那么你千万不要再进行关闭文件的操作, 因为一定会报错
打开文件获得一个空指针, 强行去释放这个空指针里的内容, 必然出错

评分

参与人数 1荣誉 +1 鱼币 +1 收起 理由
lark + 1 + 1 太感谢了

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-7-27 16:40:43 | 显示全部楼层
ryxcaixia 发表于 2015-7-27 16:09
额。。楼主 好巧 又见到你了
一个一个问题说

好快的速度!!!!!现在对你可是佩服的五体投地了。大神,你这太厉害。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-7-27 16:41:01 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-7-27 16:41:15 | 显示全部楼层
lark 发表于 2015-7-27 16:40
好快的速度!!!!!现在对你可是佩服的五体投地了。大神,你这太厉害。

与君共勉
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-7-27 16:46:41 | 显示全部楼层

:handshake
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-26 06:00

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表