【Educoder作业】CC++文件实训

news/2024/12/30 1:44:38/

【Educoder作业】C&C++文件实训

拖了很久了,主要是当时没有完全理解

整个文件实训和之前的区别就在于,处理问题的时候我们的数据是存到了文件里或者我们希望把输出放到文件里。所以只需要解决文件输入和文件输出的问题即可。四个关卡相当于不同的手段,大同小异。

T1 使用FILE结构操作文本文件

这个题貌似会被奇奇怪怪的方式卡掉
我们希望写一个GetcharGetcharGetchar函数来表示从文件里读出来一个有效字符,这样的话后续处理就很简单。需要注意的是,文件的末尾是EOFEOFEOF

#include <stdio.h>
// 函数extractDigit的功能:从文件a.txt中提取数值写入文件b.txt中
void extractDigit();
// 请在此添加代码,实现extractDigit函数
/********** Begin *********/
char Getchar(FILE *f) {char c = fgetc(f);if (c == EOF) return EOF;while (c < '0' || c > '9') {c = fgetc(f);if (c == EOF) return EOF;}return c;
}void extractDigit() {FILE *fi = fopen("a.txt", "r");FILE *fo = fopen("b.txt", "w");if (fi == NULL || fo == NULL) return;char c = Getchar(fi);int mdl = 0, cnt = 0;while (c != EOF) {(mdl *= 10) += (c - '0');cnt ++ ;if (cnt == 3) {// printf("%d\n", mdl);fprintf(fo, "%d ", mdl);mdl = 0, cnt = 0;}c = Getchar(fi);}if (cnt) fprintf(fo, "%d ", mdl);fclose(fi);fclose(fo);
}
/********** End **********/

T2 使用FILE结构操作二进制文件

这就是新的读取方式,用二进制打开文件,这样就可以根据位数用freadfreadfread读取了。

#include <stdio.h>// 结构clothing
struct clothing {char label[12];  // 编号float price;  // 价格
};/* 函数readClothing:从文件fp中读取服装信息到cloth中参数fp:指向打开的二进制文件,cloth:存放读出的服装信息返回值:服装信息数量说明:文件中首先以二进制方式存入了一个整数(服装信息数n),然后以二进制方式存入n种服装信息(clothing类型)
*/
int readClothing(FILE *fp, clothing cloth[])
{// 请在此添加代码,补全函数readClothing/********** Begin *********/int n;fread(&n, sizeof(n), 1, fp);fread(cloth, sizeof(clothing), n, fp);return n;/********** End **********/
}

T3 使用文件流操作文本文件

这关给我们介绍了流的方式,很简单很便捷。
注意一下whilewhilewhile的判断条件就行。

#include <iostream>
#include <fstream>
using namespace std;/*函数count:统计文件fin中每种服装的销售总额,并写入文件fout中参数fin:文件每种服装的销售情况,fout:每种服装销售总额的写入文件返回值:无说明:文件fin中,每种服装信息占一行,分别为服装编号,销售件数,每件的销售价格(整型)。文件fout:每种服装统计信息占一行,分别为服装编号,销售总额(整型),中间用一个空格隔开。
*/
void count(ifstream & fin, ofstream & fout)
{// 请在此添加代码,补全函数count/********** Begin *********/char s[12];fin >> s;while (!fin.eof()) {int m, sum = 0;fin >> m ;for (int j = 0; j < m; j ++ ) {int x; fin >> x ; sum += x;}fout << s << ' ' << sum << endl ;fin >> s ;}/********** End **********/
}

T4 使用文件流操作二进制文件

第四关之于第三关,就像第二关之于第一关。相当于在一种输入方式的基础上给二进制的方式。可以做到按位输入,在某些特定的题里会有用的。

#include <fstream>
#include <string.h>
#include <iostream>
using namespace std;// 结构clothing
struct clothing {char label[12];  // 编号int numberRemaining;  // 剩余件数
};/*函数getNumber:在文件ifile中查找标签为lable的服装数量参数ifile:存放服装信息的文件,label:要查找的服装标签返回值:标签为label的服装数量说明:文件中ifile中存放着服装信息,服装信息为以二进制写入的一个个clothing结构变量
*/
int getNumber(ifstream &ifile, char *label)
{// 请在此添加代码,补全函数getNumber/********** Begin *********/clothing a;ifile.read((char*)&a, sizeof(clothing));while (!ifile.eof()) {if (strcmp(label, a.label) == 0) return a.numberRemaining;ifile.read((char*)&a, sizeof(clothing));}return 0;/********** End **********/
}

http://www.ppmy.cn/news/6847.html

相关文章

用uniapp实现teb切换

1.html <view><!-- tab栏切换动态改变激活样式 --><view class"nav"><view class"nav-list" v-for"(item,index) in list" :key"item.id" tap"changeAct(item)"><!-- 激活样式名字是红色 判断a…

李宪磊老师:人力资源一定要懂得八条人力资源管理定律

李宪磊老师:人力资源一定要懂得八条人力资源管理定律 作为人力资源&#xff0c;在职场上一定要知道的八条人力资源管理定律&#xff0c;看看您能知道多少&#xff0c;懂得这些定律&#xff0c;可以轻松的做好人力资源的工作&#xff0c;接下来和老师一起来学习下吧。 李宪磊老师…

OpManager 实时网络监控

网络是全球企业背后的基础。它在为您的员工提供行政服务以及为各大洲的客户提供服务方面发挥着关键作用。网络可帮助您将信息保存在一个集中位置 - 需要和限制所有其他入站请求的人员可以访问。那么&#xff0c;您如何提供持续的一流最终用户体验并维护快速发展的网络呢&#x…

大数据学习

优化: 按不同维度切分 ########## hadoop ########## 删除job hadoop job -kill job_xxx 折半查找(有序查找) 数据统计(hive) 数据过滤 同类汇聚 全局排序 容错框架 常见应用 从日志中找到某一个条件(时间,用户)数据 除去非法数据,保留合法数据 数据格式整理 混合日志,按…

【LeetCode】C语言实现---用队列实现栈用栈实现队列

目录&#x1f449;用队列实现栈&#x1f449;用栈实现队列&#x1f449;用队列实现栈 入口&#xff1a;OJ 题目描述&#xff1a; 请你仅使用两个队列实现一个后入先出&#xff08;LIFO&#xff09;的栈&#xff0c;并支持普通栈的全部四种操作&#xff08;push、top、pop 和 em…

9.Linux文件管理命令---sort按顺序显示文件内容

9.Linux文件管理命令—sort按顺序显示文件内容 文章目录sort按顺序显示文件内容排序选项如下其他选项如下案例练习sort按顺序显示文件内容 作用&#xff1a;按顺序显示文件内容。 用法&#xff1a;sort [选项]…[文件]… 排序选项如下 命令描述-b,--ignore-leading-blanks忽…

文献检索报告

文献检索第一篇检索作业总结第一章检索任务1.1检索课题1.2确定选题所属学科1.3中英文检索词第二章检索策略与结果2.1检索中文期刊文献2.1.1 CNKI中国期刊全文数据库2.1.2 维普期刊全文数据库2.1.3 万方期刊数据库2.1.4 超星期刊全文2.2检索中文学位论文2.2.1 CNKI博硕学位论文数…

某农业学校 算法设计与分析实验4-贪心算法

1. 会场安排问题--贪心 问题描述&#xff1a; 假设要在足够多的会场里安排一批活动&#xff0c;并希望使用尽可能少的会场。设计一个有效的贪心算法进行安排。(这个问题实际上是著名的图着色问题。若将每一个活动作为图的一个顶点&#xff0c;不相容活动间用边相连。使相邻顶点…