将列表写到txt.file

时间:2018-06-19 17:24:13

标签: c fwrite

我制作了一个函数,可以将list 的随机框(/节点/链接)转换为 array(连续存储器)。所有这些都是因为我试图将fwrite list变成file(.txt)

但是,当我打开文件时,所看到的只是value字段中的单词,然后是39个空格,这些空格可以是空白,也可以是随机字符或其他。有人可以告诉我为什么会这样吗?

如何仅通过每个数组元素的value字段(list链接)或全部3却通过调用一次fwrite来获得结果?

struct box {
    char value[20] ;
    struct box * next ; 
    int occurs;
} ;

typedef struct box Box;
typedef Box * List;


Box* list_toarray(List mylist){
    List iter=mylist;
    Box *packed;
    Box *dup;
    dup=packed=malloc((sizeof(Box))*lenlist(mylist));
    while(iter!=NULL){
        memcpy(packed,iter,sizeof(Box));
        packed++;//packed[1];
        iter=iter->next;
        if(iter!=NULL)
            (packed-1)->next=packed;
        else
            (packed-1)->next=NULL;
    }
    printf("\nInput list to array(Consecutive blocks of memory) :\n");
    report(dup);
    return dup;
}

void fread_fwrite_lsttoarray(Box *dup){
    FILE *myfile;
    myfile=fopen("fwfr.txt","wt");
    fwrite(dup,sizeof(Box),6,myfile);
    fclose(myfile);
}

这也是我所说的function

fread_fwrite_lsttoarray(list_toarray(newlistasc));

其中newlistasc是带有list个元素的随机struct box

1 个答案:

答案 0 :(得分:1)

在函数fread_fwrite_lsttoarray()中

更改

fwrite(dup,sizeof(Box),6,myfile);

fprintf(myfile, "%s, %d\n", dup->value, dup->occurs);

不要将elememt next写入文件,因为它的值在内存之外毫无意义。