c语言将链表写入文件
1. 怎样把一个链表写到文件中(用c语言实现)
你的数据结构给我看看
存数据:
int i;
FILE *fp;
Student *temp=studentlist;//链表头
Student *temp2,*head2;//存放读取数据
if((fp=fopen("c:\\save.dat","wb+"))==NULL)
{
printf("\n sorry! can't open the file!\n");
exit(1);
}
//写入
while(temp!=NULL)
{
fwrite(temp,sizeof(struct Student),1,fp);
temp = temp->next;
}
//读取
rewind(fp);
fread(temp2,sizeof(Student),1,fp);
head2=temp2;
while(!feof(fp))
{
fread(temp2,sizeof(struct Student),1,fp);
temp2->next=(Student*) malloc(sizeof(Student));
temp2=temp2->next;
temp2->next=NULL;
}
fclose(fp);
2. c语言如何将链表存入文件中
double input(void);
把分号去了吧。声明要分号,函数体是不用的。
太多错误了。
int *head,*p; 不是INT
int i=0;这个要移前去
q=(struct snode*)malloc(sizeof(struct snode);未定义的Q,少个)
FILE *fp;移到函数开始
int k;
fwrite(&athnum[k],sizeof(struct vote),1,fp); 未定义的athnum
太多错了
3. C语言中如何将链表中的数据写入文件中
#include <stdio.h>
#include <stdlib.h>
typedef struct LinkedList_st{
int key;
struct LInkedList_st * next;
}LinkedList;
int writeList(const char* path,LinkedLIst* lst){
if(lst==NULL) return -1;
FILE* file = open(path,'w+');
if(file==NULL){
printf("open file failed!");
return -1;
}
LinkedList* ptr = lst;
while(ptr!=NULL){
fprintf(file,"%d\n",ptr->key);ptr=ptr->next;
}
close(fp);
return 1;
}
随手写的,应该没错吧!自己调试下!
4. C语言如何将链表里的值写入文件
先定义一个全局的文件 FILE *fp;
读文件
if((fp=fopen("student.txt","r"))==NULL)/*打开文件*/
{ printf("文件打不开!\n");
exit(1);
}
while(!feof(fp))
{ p=(Student *)malloc(sizeof(Student));
fscanf(fp,"%s%s%s%d%d%d%d%d%d",
p->num,p->name,p->clas,&p->xf.jch,&p->xf.zhy,&p->xf.xx,&p->xf.rw,&p->xf.shy,&p->xf.zx);
p->next=sx->next;
p->prior=sx;
if(sx->next!=NULL)
p->next->prior=p;
sx->next=p;
}
fclose(fp);
写文件
if((fp=fopen("student.txt","w"))==NULL)
{
printf("文件打不开!\n");
exit(1);
}
while(p!=NULL)
{
fprintf(fp,"\n%s %s %s %d %d %d %d %d %d",
p->num,p->name,p->clas,p->xf.jch,p->xf.zhy,p->xf.xx,p->xf.rw,p->xf.shy,p->xf.zx);
p=p->next;
}
fclose(fp);
5. C语言动态链表,如何存入文件里
非常简单就是用一般的fwrite函数就OK。
你参考下面的例子:
#include<stdio.h>
#define set_s (x,y) {strcoy(s[x].name,y);s[x].size=strlen(y);}
#define nmemb 3
struct test
{
char name[20];
int size;
}s[nmemb];
main()
{
FILE * stream;
set_s(0,”Linux!”);
set_s(1,”FreeBSD!”);
set_s(2,”Windows2000.”);
stream=fopen(“/tmp/fwrite”,”w”);
fwrite(s,sizeof(struct test),nmemb,stream);
fclose(stream);
}
如有疑问可以发邮件到:[email protected]
6. 如何用c语言将文件中的数据写入链表中
sw是我链表的首地址
fp是文件的指针
下面定义链表类型:num域存放的是int型数据,可根据你的情况来改变。
typedef
struct
node{
int
num;
struct
node
*next;
}node;
p
指向链表中的首元结点
while(p!=null){
fprintf(fp,
"%d,%s",
p->num);
p=p->next;
}
其实,这样操作是非常简单的。
7. C语言问题:如何将链表里的数据写入文件中
1、C语言标准库提供了一系列文件操作函数。文件操作函数一般以f+单词的形式来命名(f是file的简写),其声明位于stdio.h头文件当中。例如:fopen、fclose函数用于文件打开与关闭;fscanf、fgets函数用于文件读取;fprintf、fputs函数用于文件写入;ftell、fseek函数用于文件操作位置的获取与设置。
2、例程:
#include<stdio.h>
inta;
charb,c[100];
intmain(){
FILE*fp1=fopen("input.txt","r");//打开输入文件
FILE*fp2=fopen("output.txt","w");//打开输出文件
if(fp1==NULL||fp2==NULL){//若打开文件失败则退出
puts("不能打开文件!");
return0;
}
fscanf(fp1,"%d",&a);//从输入文件读取一个整数
b=fgetc(fp1);//从输入文件读取一个字符
fgets(c,100,fp1);//从输入文件读取一行字符串
printf("%ld",ftell(fp1));//输出fp1指针当前位置相对于文件首的偏移字节数
fputs(c,fp2);//向输出文件写入一行字符串
fputc(b,fp2);//向输出文件写入一个字符
fprintf(fp2,"%d",a);//向输出文件写入一个整数
fclose(fp1);//关闭输入文件
fclose(fp2);//关闭输出文件,相当于保存
return0;
}
8. c语言无法把链表数据写入文件中
fwrite(head, sizeof(struct student), 1, fp);
还有head->next==NULL;
应该改为head->=NULL;
printf("学号:");上面那行head;什么意思???应该把它去掉吧
9. 用c语言怎么把一个双向链表写入文件
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedefstructdatanode{
charname[24];
charphone[12];
//......
structdatanode*next;
}*pNode,*LinkList,Node;
LinkListgetEmptyList(){
LinkListhead=(pNode)malloc(sizeof(Node));
head->next=NULL;
returnhead;
}
voidaddNode(LinkListhead,pNodepnode){
pnode->next=head->next;
head->next=pnode;
}
voidwriteFile(LinkListhead){
FILE*outf;
pNodep=head->next;
if((outf=fopen("data.txt","wt"))==NULL){
printf("不能打开数据文件。 ");
exit(1);
}
while(p){
fwrite(p,sizeof(Node),1,outf);
p=p->next;
}
fclose(outf);
}
intmain(){
charname[24],phone[12];
//......
pNodep;
LinkListhead=getEmptyList();
printf("姓名联系电话 ");
while(scanf("%s%s",name,phone)==2){
p=(pNode)malloc(sizeof(Node));
strcpy(p->name,name);
strcpy(p->phone,phone);
addNode(head,p);
printf("姓名联系电话(<Ctrl+Z><ENTER>结束) ");
}
writeFile(head);
return0;
}
10. C语言中如何将一个链表保存为文件
1、基本思想是通过遍历的方式存储(数据,不存储指针域),还原的时候,根据存储的方式读取数据,再建链表。
2、比如单链表,一次遍历可以得到一个一维数组,存储该数组即可。读取时,依次读取这一数组,重建时,数组的第一个元素的next是第二个元素,第二个next是第三个元素。再比如复杂一点的二叉树,采用链表的形式表示,要存储该二叉树,首先遍历,比如采用中序遍历,得到一个一维数组,保存之。还原的时候,依据中序遍历的原则,可以还原(重建)出二叉树。