我不知道为什么,但是当我做./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;
}
发布于 2017-04-06 22:47:44
您刚刚测试了打开的文件是否失败,如果它失败了,则继续尝试使用它。NULL
的返回值表示一个错误,您不能使用句柄。
因此,您应该将==
更改为!=
。
if((file_pointer = fopen("file.txt","rb")) != NULL)
{
...
}
或略为可读的风格(在我看来):
file_pointer = fopen("file.txt","rb");
if(file_pointer)
{
...
}
顺便说一句,没有必要在rewind
之前使用fclose
。
https://stackoverflow.com/questions/43266842
复制相似问题