c语言如何将文件的数据读入一个链表中

例如我先将链表中的数据放入文件,我关闭程序后,再次运行想把文件的内容再放到链表中,应该怎么样写?
问题补充:文件内容如下
怎么样放到链表里的对应的元素去啊

struct lesson
{
char name[10]
int no;
float workday;
float workyear;
}
怎么放到对应东东去啊? 如:我把name,no,workday;导出的文本文件以后,我在重新导入,然后让导入的数据在重写参与运算,比如修改,查询.等等!!!
<注>越详细越好,最好加上相应的注释!答得好的话我在追加100分..
可惜本人技术不够,只会导入,但不可以参与运算,所以请C高手帮忙,越快越好!!!

用fscanf和fprintf,如果是C++的话用fstream更加方便。
例如写文件,如果你想每一行放一个链表,可以这么写
FILE *f=fopen("abc.txt");
//然后对链表每一个元素
fprintf(f,"%s %d %f %f\n",name,&no,&workday,&workyear);

fclose(f);
然后你打开abc.txt,看看它是怎么存的。
读文件刚好相反,用scanf:

FILE *f=fopen("abc.txt");
//然后对文件的每一行,读到变量里

while(fscanf(f,"%s %d %f %f\n",name,&no,&workday,&workyear)!=EOF)
{
吧name,no,...赋值到链表里面
}

fclose(f);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-07-05
#include<stdio.h>
#include<stdlib.h>
 
struct date
{
    char str[3];
    struct date *next;
};
 
//链表长度为len
struct date *create_link(int len)
{
    struct date *head;
    struct date *tmp;
    int i;
    head = malloc(sizeof(struct date));
    tmp = head;
    for(i = 1; i < len; ++i)
    {
        head ->next = malloc(sizeof(struct date));
        head = head ->next;
    }
    head ->next = NULL;
    return tmp;
}
 
//读文件到链表
void read_file_to_link(struct date *head,FILE *fp)
{
    if(head == NULL || fp == NULL)
    {
        fprintf(stderr,"null pointer");
        exit(EXIT_FAILURE);
    }
        do
        {
            fscanf(fp,"%3s",head ->str);
            head = head ->next;
        }while(head != NULL);
}
 
//显示链表中的内容
void print_link(struct date *head)
{
    if(head == NULL)
    {
        fprintf(stderr,"null pointer");
        exit(EXIT_FAILURE);
    }
    do
    {
        printf("%s",head ->str);
        head = head ->next;
    }while(head != NULL);
}
 
int main()
{
    FILE *fp;
    int len; //链表长度
    scanf("%d",&len);
    fp = fopen("a.txt","r");
    struct date *head;
    head = create_link(len);
    read_file_to_link(head,fp);
    print_link(head);
 
    exit(EXIT_SUCCESS);
}

第2个回答  2007-06-29
这么难,高手!^-^
相似回答