使用链表来写/读文件

时间:2018-02-01 10:11:12

标签: c eclipse data-structures linked-list

struct DETAIL
{
     char data[12+1];
     struct DETAIL* next;
};
int main()
{
    int ret = 0;
    FILE *fp = fopen("linked","w+");
    struct DETAIL *ptr = NULL;
    struct DETAIL *stTmp = NULL;
    int i = 0;   
    stTmp = (struct DETAIL*)malloc(sizeof(struct DETAIL));
    ptr = (struct DETAIL*)malloc(sizeof(struct DETAIL));
    for(i = 0; i<10; i++)
    {
        sprintf(stTmp->data,"%012d",i+1);
        ptr->next = stTmp;
        ret= fwrite((struct DETAIL *)&(ptr->next),1,sizeof(struct DETAIL),fp));                 
        printf("data[%d]:%s\r\n",i,ptr->next->data);
        ptr = ptr->next;
    }
}  

面临的问题是eclipse luna,我想用链接来编写数据 我希望在文件中写入10条记录,同时写入文件中的伪数据。但数据正确打印。你的帮助会让我在编程方面更加强大。感谢。

1 个答案:

答案 0 :(得分:0)

ptr->next 指向struct的指针。在C中,你永远不应该明确地转换为void *,因为它会掩盖编译器警告。要修复代码,您只需编写:

ret= fwrite(ptr->next,1,sizeof(struct DETAIL),fp);

但是将指针存储到文件中并没有多大意义...仅存储数据部分会更好恕我直言:

ret= fwrite(ptr->next->data,1,sizeof(stTmp->data),fp);