c语言作业雇人写,C语言作业的链表数据的读写
问题的引入:
这学期C语言项目我选择做一个理财管理系统,数据存储使用链式映象,也在此基础上实现数据显示功能块。在完成了数据的统计显示,按时间段显示,按类别显示等功能后,才开始考虑数据的读写的文件操作功能块,因为自己之前几乎没有使用过C语言的文件操作函数。
2.如何解决:
有同学早早就完成了项目,我就抱大腿去学习下别人是如何实现的, 以下是同学做的学生成绩管理系统的读写操作函数(不过他是用顺序存储,惊了)
void IO_ReadInfo()
{
FILE *fp;
int i;
if ((fp=fopen("Database.txt","rb"))==NULL)
{
printf("error \n");
return;
}
if (fread(&num,sizeof(int),1,fp)!=1)
{
num=-1;
}
else
{
for(i=0;i
{
fread(&students[i],sizeof(struct student),1,fp);
}
}
fclose(fp);
}
void IO_WriteInfo()
{
FILE *fp;
int i;
if ((fp=fopen("Database.txt","wb"))==NULL)
{
printf("error\n");
return 0;
}
fwrite(&num,sizeof(int),1,fp);
for (i=0;i
{
fwrite(&students[i],sizeof(struct student),1,fp);
}
fclose(fp);
}
可看得我云里雾里,所以自己动手去实现功能之前,得需了解C语言的文件操作是通过哪些函数进行的,具体如何实现。
///1.打开操作
fopen(const char *, const char *);
///第一参数为文件名(绝对路径或相对路径),第二个参数为打开模式
/**********************************
打开模式 (打开二进制文件的模式需之前加一个'b')
"r":只能从文件中读数据,该文件必须先存在,否则打开失败
"w":只能向文件写数据,若指定的文件不存在则创建它,如果存在则先删除它再重建一个新文件
"a":向文件增加新数据(不删除原有数据),若文件不存在则打开失败,打开时位置指针移到文件末尾
"r+":可读/写数据,该文件必须先存在,否则打开失败
"w+":可读/写数据,用该模式打开新建一个文件,先向该文件写数据,然后可读取该文件中的数据
"a+":可读/写数据,原来的文件不被删去,位置指针移到文件末尾
*********************************/
///2.读写操作
fprintf(FILE *, const char *, ...);
fscanf(FILE *, const char *, ...);
///与printf和scanf的使用类似
///3.关闭操作
fclose(FILE *);
///关闭后将缓存区的信息写入磁盘
以上便是我需要使用到的函数。它们包含于stdio.h这个头文件中
3.问题解决:
既然有了工具,实现具体的链表读写操作就so easy了
void SaveJournal(LinkList* Inc,LinkList* Exp)///保存账目为txt文件到当前目录
{
FILE* Incomefile=fopen("Income.txt","w");
FILE* Expendfile=fopen("Expend.txt","w");
Link t_p=Inc->head;
while(t_p!=NULL)
{
fprintf(Incomefile,"%f %d %d %d %d ",t_p->mymoney[t_p->type],t_p->type,t_p->year,t_p->month,t_p->day);
t_p=t_p->next;
}
fclose(Incomefile);
t_p=Exp->head;
while(t_p!=NULL)
{
fprintf(Expendfile,"%f %d %d %d %d ",t_p->mymoney[t_p->type],t_p->type,t_p->year,t_p->month,t_p->day);
t_p=t_p->next;
}
fclose(Expendfile);
}
LinkList* LoadData(int opt) ///载入收入或支出账目
{
LinkList* L=(LinkList*)malloc(sizeof(LinkList));
L->len=0;
L->tail=L->head=NULL;
Link t_pr;
Link t_nx;
float t_money;
int t_type;
int t_year;
int t_month;
int t_day;
FILE* Incomefile=NULL;
FILE* Expendfile=NULL;
switch(opt)
{
case 1:
{
Incomefile=fopen("Income.txt","r");
while(fscanf(Incomefile,"%f %d %d %d %d ",&t_money,&t_type,&t_year,&t_month,&t_day)!=EOF)
{
t_pr=(Link)malloc(sizeof(DuLNode));
t_pr->type=t_type;
t_pr->mymoney[t_type]=t_money;
t_pr->year=t_year;
t_pr->month=t_month;
t_pr->day=t_day;
if(L->len>0)
{
t_pr->prior=t_nx;
t_nx->next=t_pr;
t_pr->next=NULL;
L->tail=t_pr;
t_nx=t_pr;
}
else
{
t_pr->prior=NULL;
t_pr->next=NULL;
L->head=L->tail=t_pr;
t_nx=t_pr;
}
L->len++;
}
fclose(Incomefile);
break;
}
case 2:
{
Expendfile=fopen("Expend.txt","r");
while(fscanf(Incomefile,"%f %d %d %d %d ",&t_money,&t_type,&t_year,&t_month,&t_day)!=EOF)
{
t_pr=(Link)malloc(sizeof(DuLNode));
t_pr->type=t_type;
t_pr->mymoney[t_type]=t_money;
t_pr->year=t_year;
t_pr->month=t_month;
t_pr->day=t_day;
if(L->len>0)
{
t_pr->prior=t_nx;
t_nx->next=t_pr;
t_pr->next=NULL;
L->tail=t_pr;
t_nx=t_pr;
}
else
{
t_pr->prior=NULL;
t_pr->next=NULL;
L->head=L->tail=t_pr;
t_nx=t_pr;
}
L->len++;
}
fclose(Expendfile);
break;
}
}
return L;
}
我将收入与支出信息分开来保存和读取,因为自己也是用两个双向链表存储收入和支出记录的。
4.拓展:
如何才能将收入和支出信息保存到同一文件中?如何区分呢?
c语言作业雇人写,C语言作业的链表数据的读写相关推荐
- 代写php代码作业,代写phpmyadmin留学生作业、代做SQL语言作业、SQL程序设计作业调试、代做PHP script作业...
代写phpmyadmin留学生作业.代做SQL语言作业.SQL程序设计作业调试.代做PHP script作业 日期:2019-04-20 01:17 Overview:In this assignme ...
- java c语言 for_Java能写C语言编译器吗
用java是可以写语言编译器的,用任何语言工具写都可以.各语言开发工具间只有开发效率的差异,没有可行不可行的区别. 编译器其实就是一个翻译工具,它可以把代码直接翻译成二进制文件交给CPU执行(二进制指 ...
- 怎么用centos7运行c语言程序_写C语言程序,如何提升程序运行效率?我的一点经验分享给你们!...
在编写C语言程序后,经常需要对源码进行优化,以提高程序的运行效率,下面简述几个常用的优化技巧以供大家参考: 1.C于代码在程序中的优化 现在的C编译器会自动对代码进行优化,但这些优化是对执行速度和代码 ...
- 下列python语言、返回结果不是uc_MKAN1-UC 5103作业代写、代做Analytics作业、Java,Python,c/c++程序语言作业代做...
MKAN1-UC 5103作业代写.代做Analytics作业.Java,Python,c/c++程序语言作业代做 日期:2020-05-21 11:08 Marketing Analytics Sp ...
- 代写python代码一般多少钱_代写CO 353课程作业、代做Python程序设计作业、代写Python语言作业...
代写CO 353课程作业.代做Python程序设计作业.代写Python语言作业 日期:2020-03-17 11:22 CO 353 - Homework assignment 4 Winter ' ...
- python实验报告代写_TensorFlow作业代写、代做Python程序语言作业、代写github课程作业、Python实验作业代写...
TensorFlow作业代写.代做Python程序语言作业.代写github课程作业.Python实验作业代写 日期:2019-07-10 10:34 Python Practical Examine ...
- 代写python作业 费用_代写dither method作业、代做python程序设计作业、代写python语言作业、代做Image Dithering作...
代写dither method作业.代做python程序设计作业.代写python语言作业.代做Image Dithering作 日期:2019-10-07 04:39 ? Implement the ...
- 代写python作业 费用_代写Python or R作业、代做Python语言程序作业、代写Longitude留学生作业...
代写Python or R作业.代做Python语言程序作业.代写Longitude留学生作业 日期:2018-11-13 10:19 Your task is to run some analysi ...
- python程序设计作业_CS602留学生作业代做、代写Programming课程作业、代做Python语言作业、Python编程设计作业调试...
CS602留学生作业代做.代写Programming课程作业.代做Python语言作业.Python编程设计作业调试 日期:2019-12-06 10:50 CS602 - Data-Driven D ...
最新文章
- matlab创建二叉树(二维数据)
- MongoDB 分布式部署教程
- Sonar-project.properties配置
- 生成FaceBook所需的散列哈希值
- 使用Spring Data的Apache Ignite
- 高斯卷积核如何生成 C语言实现
- NOIP 2011 聪明的质检员-二分答案
- 软件工程复习提纲——第三章
- 安卓mqtt调试工具_MOTT工具调试阿里云物联网平台
- 分布式自增ID算法---雪花算法 (snowflake,Java版)---算法001
- msys2编译器的配置
- excel图片变成代码_有趣的EXCELvba作图
- HFSS19 官方中文教程系列 L06
- p2p服务器系统,先锋P2P高清点播服务器(XfServer)
- linux 生成p12证书,Linux下使用openssl制作CA及证书颁发
- 解决eclipse安装Darkest Dark Theme报错
- 天擎终端安全管理系统未授权访问SQL注入漏洞
- Yandex-好用的以图搜图网站
- 计算机艺术未来发展趋势,数字媒体艺术未来的发展趋势探讨
- 华三交换机配置access命令_华三交换机查看配置命令是什么
热门文章
- springboot 利用configureMessageConverters add FastJsonHttpMessageConverter 实现返回JSON值 null to ...
- 对象④for in 循环
- js判断display隐藏显示
- 原型链Object的一些方法
- Spring之数据库操作
- eclipse运行WordCount
- perl6之'Hello World'
- 在一般处理程序(handler)中获取session的方法
- Happy birthday! Hubble
- 移动端,input输入框被手机输入法解决方案