今天小编给大家分享一下C语言怎么实现链表与文件存取的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。此处为main函数的内容in
今天小编给大家分享一下C语言怎么实现链表与文件存取的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。
int main(void){ char filename[50]; printf("How many ?: "); scanf("%d", &n); printf("please input filename: "); scanf("%s", filename); Create(); //调用函数建立链表 save(filename); //调用函数存到文件 free(phead);//释放phead内存 show(filename); //调用函数输出文件 system("pause"); return 0;}
建立链表并输入数据到链表里
代码如下:
typedef struct stu{ char name[20]; char adr[20]; int tel; struct stu* pnext;} stu;int n;//n存着信息条数stu* phead=NULL;//phead为链表首地址 void Create() //建立链表{ stu *pend,*pnew;//尾节点,新节点 pend=phead =(stu*)malloc(sizeof(stu));//分配内存给首节点 printf("please first input Name, Adress and telephone:\n"); for(int i=0;i<n;i++) { pnew=(stu*)malloc(sizeof(stu)); //分配新节点 pend->pnext=pnew; //原来的尾节点指向新节点 pnew->pnext=NULL; //新节点的指针为NULL printf("NO.%d: ",i+1); scanf("%s", pend->name); scanf("%s", pend->adr); scanf("%d",&pend->tel); pend=pnew; //赋值后指向尾节点 } pnew=pnew->pnext;//指向NULL free(pnew); //释放pnew内存}
此处用到了fopen、fprintf、fclose等文件操作函数
代码如下:
void save(char *filename){ FILE *w;//文件指针 if ((w = fopen(filename, "wb")) == NULL){ printf("cannot open file\n"); exit(1); } for (int i = 0; i < n; i++) //链表数据循环输入到文件内 { fprintf(w,"%s ",phead->name); fprintf(w,"%s ",phead->adr); fprintf(w,"%d", phead->tel); fprintf(w,"%s","\r\n");//换行 phead=phead->pnext;//指向下一个节点 } fclose(w);//关闭文件}
先把文件内容保存到结构体数组内,然后再通过数组输出到屏幕上。
代码如下:
void show(char *filename)//输出文件{ FILE *fp;//文件指针 stu info[100]; //负责存放文件中的数据,然后输出 if ((fp = fopen(filename, "rb")) == NULL){ printf("cannot open file\n"); exit(1); } for (int i = 0; i < n; i++) { fscanf(fp,"%s",&(info[i].name));//输出数据到数组 fscanf(fp,"%s",&(info[i].adr)); fscanf(fp,"%d",&(info[i].tel)); printf("%10s%15s%15d\n", info[i].name, info[i].adr, info[i].tel); //输出数据到屏幕 } fclose(fp); //关闭文件}
#include<stdio.h>#include<stdlib.h>#include<process.h>typedef struct stu{ char name[20]; char adr[20]; int tel; struct stu* pnext;} stu;int n;//n存着信息条数stu* phead=NULL;//phead为链表首地址 void Create(){ stu *pend,*pnew;//尾节点,新节点 pend=phead =(stu*)malloc(sizeof(stu));//分配内存给首节点 printf("please first input Name, Adress and telephone:\n"); for (int i = 0; i < n; i++) { pnew=(stu*)malloc(sizeof(stu)); //分配新节点 pend->pnext=pnew; //原来的尾节点指向新节点 pnew->pnext=NULL; //新节点的指针为NULL printf("NO.%d: ",i+1); scanf("%s", pend->name);//输入数据存到链表中 scanf("%s", pend->adr); scanf("%d",&pend->tel); pend=pnew; //赋值后指向尾节点 } pnew=pnew->pnext;//指向NULL free(pnew); //释放pnew内存}void save(char *filename){ FILE *w;//文件指针 if ((w = fopen(filename, "wb")) == NULL){ printf("cannot open file\n"); exit(1); } for (int i = 0; i < n; i++) //链表数据循环输入到文件里 { fprintf(w,"%s ",phead->name);//数据存入到文件 fprintf(w,"%s ",phead->adr); fprintf(w,"%d", phead->tel); fprintf(w,"%s","\r\n");//换行 phead=phead->pnext;//指向下一个节点 } fclose(w);//关闭文件}void show(char *filename){ FILE *fp;//文件指针 stu info[100]; //负责存放文件中的数据,然后输出 if ((fp = fopen(filename, "rb")) == NULL){ printf("cannot open file\n"); exit(1); } for (int i = 0; i < n; i++) { fscanf(fp,"%s",&(info[i].name));//输出数据到数组 fscanf(fp,"%s",&(info[i].adr)); fscanf(fp,"%d",&(info[i].tel)); printf("%10s%15s%15d\n", info[i].name, info[i].adr, info[i].tel);//输出数据到屏幕 } fclose(fp);} int main(void){ char filename[50]; printf("How many ?:\n"); scanf("%d", &n); printf("please input filename: "); scanf("%s", filename); Create(); //调用函数建立链表 save(filename); //调用函数存到文件 free(phead);//释放phead内存 show(filename); //调用函数输出文件 system("pause"); return 0;}
以上就是“C语言怎么实现链表与文件存取”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网其他教程频道。
--结束END--
本文标题: C语言怎么实现链表与文件存取
本文链接: https://www.lsjlt.com/news/328099.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0