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是第三個元素。再比如復雜一點的二叉樹,採用鏈表的形式表示,要存儲該二叉樹,首先遍歷,比如採用中序遍歷,得到一個一維數組,保存之。還原的時候,依據中序遍歷的原則,可以還原(重建)出二叉樹。