文件操作函数 peeor(),ferror(); 的代码;
文件错误相关的函数;#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标准错误打印");E //perror()如果有多个文件被打开呢?只有1个错误的,那么它怎么去判断哪个出现错误?而我又怎么知道它打印的是哪个错误的文件?[也许...我还是没太理解 ==];
//clearerr(fp);E //这里能是不是文件打开失败的原因?
exit(0);
}
fclose(fp);E //当文件打开失败的时候,就不必要fclose()了吧?
return 0;
}
时间:2013年7月27日16:10:59; 本帖最后由 ryxcaixia 于 2015-7-27 16:39 编辑
额。。楼主 好巧 又见到你了
一个一个问题说
1:
//Eor=ferror(fp);E //这是第一个出现的问题,我想取得ferror()的返回值,但是似乎出了点问题。
ferror是测试文件读写期间获得的错误 而不是测试在打开期间的错误
换句话说ferror这个函数接受一个有效的文件流, 即一定是成功打开(非空)的文件流. 如果你给他一个空指针, 即打开失败的文件指针, 这个会直接报错
2:
perror()如果有多个文件被打开呢?只有1个错误的,那么它怎么去判断哪个出现错误?而我又怎么知道它打印的是哪个错误的文件?[也许...我还是没太理解 ==];
我理解你是想同时打开多个文件, 这个涉及到多线程操作要考虑进程调度, 以及对同一个文件读写, 这个在是很不稳定的事情 多个进程对同一个文件读也就罢了 因为每个进程项都有自己的文件指针偏移量 如果多个进程同时对一个文件写 就会很纠结
如果是打开多个文件, 在一个进程里没问题, 但是最好遵循以下原则
同时只存在一个打开的文件流, 操作完之后再操作下一个文件流
3:
如果一个文件打开失败, 那么你千万不要再进行关闭文件的操作, 因为一定会报错
打开文件获得一个空指针, 强行去释放这个空指针里的内容, 必然出错 ryxcaixia 发表于 2015-7-27 16:09
额。。楼主 好巧 又见到你了
一个一个问题说
好快的速度!!!!!现在对你可是佩服的五体投地了。大神,你这太厉害。 {:9_240:}{:9_240:}{:9_240:}{:9_240:}{:9_240:}{:9_240:}{:9_240:} lark 发表于 2015-7-27 16:40
好快的速度!!!!!现在对你可是佩服的五体投地了。大神,你这太厉害。
与君共勉{:9_240:}{:9_240:}{:9_240:}{:9_240:}{:9_240:}{:9_240:}{:9_240:}{:9_240:}{:9_240:}{:9_240:} ryxcaixia 发表于 2015-7-27 16:41
与君共勉
:handshake
页:
[1]