文件操作(链表)
1.从文件中读取数据
int Import_Data(Node *L)
{
FILE *fp;
Node *p,*q=L;
fp=fopen("f:\\StudentInfo.txt","ab+");
if(fp==NULL)
{
printf("打开文件失败!\n");
return 0;
}
while(!feof(fp)) //feof(fp)非空是返回0,为空返回1
{
p=(Node *)malloc(sizeof(Node));
if(fread(p,sizeof(Node),1,fp)==1)
{
p->next=NULL;
q->next=p;
q=p;
}
}
fclose(fp);
return 1;
}
2.保存数据到文件中
int Save_Data(Node *L)
{
FILE *fp;
Node *p=L;
int count=0;flag=1;
fp=fopen("f:\\StudentInfo.txt","wb");
if(fp==NULL)
{
printf("数据保存失败!\n");
return 0;
}
p=p->next;
while(p)
{
if(fwrite(p,sizeof(Node),1,fp)==1)
{
p=p->next;
count++;
}
else
{
flag=0;
break;
}
}
if(flag)
{
printf("保存%d个学生信息!\n");
flag=0;
}
fclose(fp);
return 1;
}
附:
文件使用方式
“r”
只读打开一个文本文件,只允许读数据
“w”
只写打开或建立一个文本文件,只允许写数据
“a”
追加打开一个文本文件,并在文件末尾写数据
“rb”
只读打开一个二进制文件,只允许读数据
“wb”
只写打开或建立一个二进制文件,只允许写数据
“ab”
追加打开一个二进制文件,并在文件末尾写数据
“r+”
读写打开一个文本文件,允许读和写
“w+”
读写打开或建立一个文本文件,允许读写
“at+”
读写打开一个文本文件,允许读,或在文件末追加数据
“rb+”
读写打开一个二进制文件,允许读和写
“wb+”
读写打开或建立一个二进制文件,允许读和写
“ab+”
读写打开一个二进制文件,允许读,或在文件末追加数据