我不知道为什么,但当我./a.out
时,它给了我那个错误:
Process finished with exit code 11
如果我对fseek
和ftell
发表评论,它不会给我一个错误?
为什么?
我做了一个逻辑错误?
代码:
#include <stdio.h>
#include <stdlib.h>
int main (){
FILE *file_pointer;
int size=0;
if((file_pointer = fopen("file.txt","rb")) == NULL)
{
printf("Ok Man File was charge in the pointer");
fseek(file_pointer, 0, SEEK_END);
size=ftell(file_pointer);
printf("%d",size);
rewind(file_pointer);
fclose(file_pointer);
} else
printf("File Not Found");
return 0;
}
答案 0 :(得分:1)
您刚刚测试了文件是否打开失败,如果失败,您继续尝试使用它。 NULL
的返回值表示错误,您无法使用句柄。
因此,您应该将==
更改为!=
:
if((file_pointer = fopen("file.txt","rb")) != NULL)
{
...
}
或稍微可读的风格(在我看来):
file_pointer = fopen("file.txt","rb");
if(file_pointer)
{
...
}
顺便说一句,rewind
之前无需fclose
。