由于字数限制,我没办法把所有源代码写出来.
下面是我定的一个结构体,链表什么的都写好了!!就链表怎么写入文件,和从文件中读到链表里面该怎么做!
求高手指点!!!
struct book
{
char num[20]; //书号
char name[10]; //书名
int jinjia; //进价
int shoujia; //售价
int shuliang; //库存数量
int shouchu; //售出
struct book *next;
};
当把链表已经确定的时候,就可以依次存入文件。
和平时链表的遍历一样,每读取一个节点内容就进行一次存入操作。
不过要注意几个部分的检查:
内存空间是否分配成功
是否成功存入到文件中
在工作完成之后,是否将以后不会用到的变量清空和删除。
按照问题要求的代码如下:
Consumer* read_list()
{
FILE *fp;
if ((fp = fopen("CONSUMER.dat", "rb")) == NULL)
{
printf("无法读取 CONSUMER.dat\n");
return NULL;
}
int sign;
Consumer *s,*p,*head;
head= (Consumer*)malloc(SIZE_C);
if (head == NULL)
{
printf("读取失败!内存空间申请不足!\n");
return NULL;
}
fseek(fp, 0, SEEK_END);
if (ftell(fp) == 0)
{
return NULL;
}
p = head;
p->next = NULL;
while (feof(fp))
{
s = (Consumer*)malloc(SIZE_C);
//fread(s, SIZE_C, 1, fp);
fread(s, sizeof(char), SIZE_C, fp);
p->next = s;
p = s;
p->next = NULL;
}
fclose(fp);
return head;
}//读取文件到链表
int save_consumer(Consumer *p)
{
FILE *fp;
Consumer *head;
head = p;//p为已经构建好的链表
//if ((fp = fopen("CONSUMER.dat", "ab+")) == NULL)
if ((fp = fopen("CONSUMER.dat", "wb")) == NULL)
{
printf("无法打开 CONSUMER.dat!\n");
return -1;
}
while (p != NULL)
{
//fwrite(p, SIZE_C, 1, fp);
fwrite(p, sizeof(char), SIZE_C, fp);
p = p->next;
}
fclose(fp);
return 1;
}//储存链表到文件
c语言如何从文件读入,并存放在链表中
return head; } 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;...
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语言将文本文件逐行读入数据结构的链表中
CFile类的readstring可以逐行读取。
怎么用C++从一个txt里面读取数据然后存放到链表中进行各种操作 最后...
C语言标准库是这样做的,参考吧:typedef struct informationTable { char name[20];char sex;char birth[10];struct informationTable *next;}INFO ,*pINFO;\/\/ 结构体 int main(int argc, char *argv[]){ FILE *pf;char scrname[20] = {0}, desname[20] = {0};pINFO head, tail, ...
c语言读取txt文档并将内容存放到表里
在C语言中,读文件的需要用到文件类型 FILE;通常的使用方式为: FILE *fp;定义一个文件指针;用指针打开文件的函数为:fp = fopen("mm.txt","w"));w可以是r,对应两种使用方式:w(write),r(read)如果是将信息写入文件,则是w。若是将文件信息写入程序,则是r。在r的方式时,即读...