fseek 后将文件指针移回
Move the file pointer back after fseek
我知道这个问题听起来很傻,但我不知道什么时候修改我的文件指针。我刚开始学习文件在 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;
}
但是系统显示我不能修改文件指针。我以为我所要做的就是在 size...
之后写 fseek(f,0,SEEK_SET);
将光标设置回原来的位置,但它没有用。
系统检查功能是这样的:
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 - function should not modify file pointer "
您的函数应该将文件设置回调用时的位置:
long int file_size_from_file(FILE *f)
{
long int size;
long int pos;
if(f==NULL)
return -2;
pos = ftell(f);
fseek (f, 0, SEEK_END);
size = ftell(f);
fseek (f, pos, SEEK_SET);
return size;
}
祝你好运。
我知道这个问题听起来很傻,但我不知道什么时候修改我的文件指针。我刚开始学习文件在 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;
}
但是系统显示我不能修改文件指针。我以为我所要做的就是在 size...
之后写 fseek(f,0,SEEK_SET);
将光标设置回原来的位置,但它没有用。
系统检查功能是这样的:
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 - function should not modify file pointer "
您的函数应该将文件设置回调用时的位置:
long int file_size_from_file(FILE *f)
{
long int size;
long int pos;
if(f==NULL)
return -2;
pos = ftell(f);
fseek (f, 0, SEEK_END);
size = ftell(f);
fseek (f, pos, SEEK_SET);
return size;
}
祝你好运。