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
这么难,高手!^-^

c语言如何从文件读入,并存放在链表中
fclose(fp);\/\/文件读取完后,进行链表操作 if(!head)\/\/如果传进来的head是个空指针,那么新指针就作为头节点返回 { new->next = NULL;return new; } while(p->next) p = p->next;\/\/把p移动到最后一个节点 p->next = new;\/\/p的下一个节点为new new->next = NULL;\/\/new的下一个节...

c语言如何将文件中的数据读出来并存到链表中
文件I\/O通过fgets来读入整行(也就是一个struct的数据)然后借助sscanf或者strtok来分离数据并分别存入结构体 链表本身操作不困难吧,先有一个链表头,然后通过malloc创建新的项 如果是一次性连续读入数据(比如数据库的初始化),用一个while循环来控制就好 ...

C语言怎么从文件中将信息导入链表中
1,建立一个链表,链表的节点struct定义为联系人信息的格式;2,读取文件,把内容存入链表;3,查询就根据姓名关键字遍历链表就行了;4,把内容存入文件;首先建立链表,以及插入节点,查询链表函数写出来;文件的读取和存入到不是很麻烦;---下面是简单的实现,可以输入,存入文件,从文件读取,打印,如...

C语言,calloc用法,用他实现把结构体数组的数据拷贝到链表,不能用mallloc...
原型:void *calloc(unsigned n,unsigned size);我写了个简单的插入链表,你参考吧 include <stdio.h>#include <stdlib.h>typedef struct student_list{ char name[6]; struct student_list *next;}SL;void insertSL(SL *slHead);\/\/添加结构数据到链表 参数:头节点指针int main(void){...

编写c语言程序,从文件中读取数据顺序存储到单链表l中,文件中数据之间用...
在c语言中,创建单链表需要使用到malloc函数动态申请内存;文件的读写需要首先使用fopen函数打开文件,然后使用fscanf,fgetc, fgets,fprintf,fputc,fputs等函数读写函数,最后读写完毕要使用fclose函数关闭函数。下面的源程序展示了关于单链表如何从文件中读取数据和往文件里存入数据。include<stdio.h> inclu...

用C语言将文本文件中的数据(一个个结构体类型的数据)读到链表中去,代码...
这是我最开始学习链表的时候写的一个很小的程序,好像不是很完善,但是大致应该没有问题,你可以参照的看看。太晚了,实在是不想写了。include <stdio.h>#include <io.h>#include <conio.h>#include <stdlib.h>#include <string.h>#define MAX 200struct student{char no[10]; \/\/ 学号char...

怎么用C++从一个txt里面读取数据然后存放到链表中进行各种操作 最后...
pf);if(tail != tmp)free(tmp);\/ head为链表头,可以执行数据操作 \/ if(NULL == (pf = fopen(desname ,"w+"))) return 0;tail = head;while(tail){ fprintf(pf, "%s %c %s\\n", tail->name, tail->sex, tail->birth);tail = tail->next;} fclose(pf);return 0;} ...

如何用C语言将文本文件逐行读入数据结构的链表中
CFile类的readstring可以逐行读取。

c语言从文件中读入多行数据(每行数据有几种)到链表中
当把链表已经确定的时候,就可以依次存入文件。和平时链表的遍历一样,每读取一个节点内容就进行一次存入

如何用C语言将文本文件中内容读入程序,并按照第二列的数据进行从大到...
int main(){ FILE *fp; if((fp=fopen("c:\\\\list.txt","rt+"))==NULL) { printf("can't open File!"); exit(1); } sttHead=(STT *)malloc(sizeof(STT)); sttHead->next=NULL; readFile(fp); printfSTT();...

相似回答