我从fopen
获得了一个奇怪的文件句柄;指针本身不是NULL,但它所代表的文件没有大小,feof(file)
已经设置了......可能导致这种情况的原因是什么?
(我对文件进行了三重检查,它存在,有数据,文件的权限还可以......并且filename
设置为" source / test_file.object.txt& #34)
bool tagFile(const char * filename){
FILE * file = fopen(filename, "r");
if(file == NULL){ // file is not NULL
printf(" Couldn't open the file %s", filename);
return false;
}
int size = fseek(file, 0, SEEK_END); // size is 0
rewind(file);
while(feof(file)){
.... // never executes because feof(file) fails
}
}
0x002cc410 // value of 'file' in the debugger
_ptr=0x00000000 <Bad Ptr>
_cnt=0
_base=0x00000000 <Bad Ptr>
_flag = 1
_file = 3
答案 0 :(得分:0)
最常见的原因是打开一个空的文件。没有要读取的字节,因此EOF是立即的,但文件存在,因此fopen
不能返回NULL。