C将链表写入文件

时间:2015-03-03 04:13:54

标签: c list pointers

我想在单独一行的链表中写下所有整数值,我有一个开始但有多个错误,我不知道从哪里开始。

struct ListNode {
    int value;
    struct ListNode * next;
};        

int llist_save(LinkedList * list, char * file_name) {
    ListNode *e = list->head;
    FILE * fd = (file_name, "w");
    while(e != NULL){
        fprintf(fd, "%d\n", e->value);
        e = e->next;
    }
    fclose(fd);
}

2 个答案:

答案 0 :(得分:0)

使用fopen();尝试:

struct ListNode {
      int value;
      struct ListNode * next;
};        

int llist_save(LinkedList * list, char * file_name) {
    struct ListNode *e = list->head;
    FILE * fd = fopen(file_name, "w");
    while(e != NULL){
        fprintf(fd, "%d\n", e->value);
        e = e->next;
    }
    fclose(fd);
}

答案 1 :(得分:0)

首先,您需要查看以下几点:

声明结构时,基本上是定义自定义用户类型。 因此,每次要创建该类型的新变量时,都需要将保留字struture放在结构名称之前。根据您的代码,这将是这样的:struct ListNode *e;

然后,您尝试向您的函数发送LinkedList参数。但是,如果您发送struct ListNode *参数,我觉得更容易,所以这样你就会知道"知道"列表中的第一个元素是什么。但是,您使用的方法也是有效的。

在谈论函数时,您声明了int返回类型函数。在您的代码中,您没有放置return语句。如果您不想返回值,只需将返回类型更改为void即可。否则,只返回一个整数。

最后只需使用fopen,这是一个可以帮助您在系统中打开文件的功能。该函数中的第一个参数是您要打开/创建的文件的名称,第二个参数是'方式' (技术上称为'模式')你想打开它。只需发送" w",这意味着写。

你说你想在一个sigle行中写入值。为此,请省略print语句中的\n字符并打印' '(空格字符)。

一些代码:

struct ListNode 
{
    int value;
    struct ListNode * next;
};        

void llist_save(LinkedList * list, char * file_name) 
{
    struct ListNode *e = list->head;
    FILE * fd = fopen(file_name, "w");

    while(e != NULL) {
        fprintf(fd, "%d ", e->value);
        e = e->next;
    }
    fclose(fd);
}

我的大脑现在不能很好地处理英语;抱歉。