【发布时间】:2023-03-17 21:55:01
【问题描述】:
我编写了一个代码,但在函数的特定部分遇到了一些问题。如果我添加 fseek 函数,我会得到“核心转储”,但如果我删除它,一切正常。
这是我的代码中存在问题的部分:
FILE* fe;
fe=fopen("fete","rb");
if (fe==NULL)
{
printf("eroare");
exit(1);
}
STUDENT* x;
int i;
long int nrfete=0;
**fseek(fe,0L,SEEK_END);**
printf("%ld",ftell(fe));
nrfete = ftell(fe)/sizeof(STUDENT);
x=(STUDENT*)malloc(nrfete*sizeof(STUDENT));
fread(&x,sizeof(STUDENT),nrfete,fe);
printf("%s",x[0].prenume);//pt verificare
fclose(fe);
来自comment
typedef struct {
char prenume[20];
char sex;
float nota;
} STUDENT;
【问题讨论】:
-
fread(&x,sizeof(STUDENT),nrfete,fe);应该是fread(x,sizeof(STUDENT),nrfete,fe); -
我修改了但我得到了同样的错误
-
请不要修改您发布的内容,除非它不是您遇到问题的实际代码。
-
哦,好的。我明白。然而,这个错误并不是问题所在。
-
当
ftell返回0,分配0字节内存并且fread从文件中读取0字节时,代码如何在没有fseek的情况下工作?请发布显示问题的Minimal, Complete, and Verifiable example。