fseek过程以退出代码11结束

时间:2017-04-06 22:37:12

标签: c

我不知道为什么,但当我./a.out时,它给了我那个错误:

Process finished with exit code 11

如果我对fseekftell发表评论,它不会给我一个错误? 为什么? 我做了一个逻辑错误?

代码:

#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;
}

1 个答案:

答案 0 :(得分:1)

您刚刚测试了文件是否打开失败,如果失败,您继续尝试使用它。 NULL的返回值表示错误,您无法使用句柄。

因此,您应该将==更改为!=

if((file_pointer = fopen("file.txt","rb")) != NULL)
{
    ...
}

或稍微可读的风格(在我看来):

file_pointer = fopen("file.txt","rb");
if(file_pointer)
{
    ...
}

顺便说一句,rewind之前无需fclose