近快一年没有接触c语言了,今天学妹问我了链表数据存如文件和读取文件到链表怎么实现,现在搞开发很少用文件,都是用数据库,在这儿我还是写一下简单的文件读取链表的操作。在c语言中,创建单链表需要使用到malloc函数动态申请内存;文件的读写需要首先使用fopen函数打开文件,然后使用fscanf,fgetc, fgets,fprintf,fputc,fputs等函数读写函数,最后读写完毕要使用fclose函数关闭函数。
下面的源程序展示了关于单链表如何从文件中读取数据和往文件里存入数据。
typedef
struct
node {
int
data;
struct
node *next;
}node;
//从文件中读取数据存入链表
node *createlink()
{
node *head =(node*)
malloc
(
sizeof
(node));
int
t;
node *p;
node *q;
p=q=head;
FILE
* r=
fopen
(
"input.txt"
,
"r"
);
if
(r==NULL)
{
printf
(
"打开文件失败!"
);
return
NULL;
}
while
(
fscanf
(r,
"%d"
,&t)!=EOF)
{
q= (node*)
malloc
(
sizeof
(node));
q->data=t;
p->next=q;
p=q;
}
p->next=NULL;
return
head;
}
//输出链表到屏幕和文件output.txt
void
outlink(node *head)
{
node *p=head->next;
FILE
*w =
fopen
(
"output.txt"
,
"w"
);
if
(w==NULL)
{
printf
(
"打开文件失败!"
);
return
;
}
while
(p)
{
//输出链表节点数据到屏幕
printf
(
"%d "
,p->data);
//输出链表节点数据到文件output.txt
fprintf
(w,
"%d "
,p->data);
p=p->next;
}
printf
(
"\n"
);
fprintf
(w,
"\n"
);
fclose
(w);
return
;
}
int
main()
{
node *head;
int
n,m;
head=createlink();
outlink(head);
system
(
"pause"
);
return
0;
}