Я знаю, что этот вопрос звучит глупо, но я не могу понять, когда я изменяю свой указатель файла. Я только начал изучать, как работают файлы в C. Я выполнял простое упражнение, в котором мне нужно было написать функцию, которая показывает размер файла и принимает указатель файла в качестве параметра. Это моя функция:
int file_size_from_file(FILE *f)
{
int size;
if(f==NULL)
{
return -2;
}
fseek (f, 0, SEEK_END);
size = ftell(f);
return size;
}
Но система показывает, что я не могу изменить указатель файла. Я думал, что все, что мне нужно было сделать, это написать fseek(f,0,SEEK_SET);
после size...
, чтобы вернуть курсор в исходное положение, но это не сработало.
Вот как работает система проверки:
FILE *f = fopen("bright", "r");
int pos = 7220;
fseek(f, pos, SEEK_SET);
printf("#####START#####");
int res = file_size_from_file(f);
printf("#####END#####\n");
test_error(res == 7220, "Funkcja file_size_from_file zwróciła nieprawidłową wartość, powinna zwrócić %d, a zwróciła %d", 7220, res);
test_error(ftell(f) == pos, "Function should not modify file pointer");
fclose(f);
После проверки появляется сообщение «FAIL - функция не должна изменять указатель файла»