整数文件无法正确打开

问题描述 投票:0回答:1

我很抱歉,这可能是一个解释非常简单的问题,但我似乎找不到它。我目前正在尝试用 C 构建一个基本数据库。我需要保存一个结构链表以及所述链表的大小,以便当我打开它时知道该列表有多大。我计划将列表的大小与链表一起写为整数。由于某种原因,即使链接列表被注释掉,程序也无法读取文件。相关代码如下:

#define Opennamefile Movienames=fopen("movienames.txt", "wb")
#define Closenamefile fclose(Movienames)
FILE *Movienames=NULL;

int openfile(int *flistsize)
{
int reject=0;
Opennamefile;
if((fread(&flistsize, sizeof(int), 1, Movienames))!=1) reject=-690;
//if(fread(&head, sizeof(identity), flistsize, Movienames)!=1) reject=-690;
if((Movienames==NULL) || (reject==-690))
{
fputs("Error opening the name file\n", stderr);
printf("%d", *flistsize);
}

return 1;
}

int savenamefile(int flistsize)
{
    int reject=0;
    if(fwrite(&flistsize, sizeof(int), 1, Movienames)!=1) reject=-690;
    //if(fwrite(&head, sizeof(identity), flistsize, Movienames)!=flistsize) reject=-690;
Closenamefile;
    if(Movienames==EOF || reject==-690)
    {
        fputs("Error closing file", stderr);
        return -69;
    }
    puts("successfully closed/saved file");
    return 1;
}
c linked-list fopen fwrite fread
1个回答
0
投票

在您的

openfile
函数中,
flistsize
已经是指向您要写入的目标的指针。但是您再次引用它,这意味着您将写入保存指针值本身的内存。

要解决该问题,请删除

&
:

fread(flistsize, sizeof(int), 1, Movienames)
© www.soinside.com 2019 - 2024. All rights reserved.