1

我得到一个奇怪的文件句柄fopen;指针本身不是 NULL,但它所代表的文件没有大小,并且feof(file)已经设置...可能是什么原因造成的?

(我三重检查了文件本身,它存在,有数据,文件的权限没问题......并filename设置为“source/test_file.object.txt”)

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
4

1 回答 1

0

最常见的原因是打开一个空文件。没有要读取的字节,所以 EOF 是立即的,但文件存在,所以fopen不能返回 NULL。

于 2015-12-23T15:43:32.747 回答