【算法】系统和文件操作

简介:

小续

   对于数据结构和算法,都只是思想层面的东西,而在实际运用当中,多数是与系统和文件相联系的,所以对于学习数据结构与算法,可以参照操作系统中一些代码的实现,毕竟那都是经过大牛再三修改得出来的精华。

   但据我了解,很多人都一味地去“研究”算法本身去了,算法主要是用来解决问题的,当它们遇到问题时,知道怎么解决,但却不知道从哪里入手,这是很悲剧的一件事情,而实际应用中,大多数操作都和文件相当,所以我这里列了两个文件相关的实例,主要是提醒大家不要忘了学算法的目的,希望能帮助到大家




文件连接


   编程:实现将命令行中指定的第一个文本文件的内容追加到第二个文件之后。

   实例解析:

   该实例要求从命令行指定两个文件名,故需要定义带参数的main()函数。

   程序代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <stdio.h>
int  main( int  argc,  char * argv[])
{
     FILE  *fp1,*fp2;
     int  ch;
     if (argc != 3)
     {
         printf (“参数个数不对!”);
         exit (0);
     }
     if ((fp1 =  fopen (argv[1], ”r”)) == NULL)
     {
         printf (“打开文件:%s失败\n”, argv[1]);
         exit (1);
     }
     if ((fp2 =  fopen (argv[2], ”a”)) == NULL)
     {
         printf (“打开文件:%s失败\n”, argv[2]);
         exit (1);
     }  
     while ((ch =  fgetc (fp1)) != EOF)
         fputc (ch,fp2);
     fclose (fp1);
     fclose (fp2);
     return  0;
}




文件读写操作  

   文件student.dat用于存储学生信息(每人存储姓名,数学、物理、化学三科成绩,总分)。写一个函数,可由键盘输入10个学生的三科成绩并存入文件,再写一个函数,读取这些分数、计算总分并将总分写入文件。

   实例解析:

   由于每人有五项数据需要存储,所以先定义一个结构体如下:

1
2
3
4
5
6
typedef   struct
{
     char  name[10];
     int  score[3];
     int  sum;
}STU;


   第一个函数用来写文件,需要用“wb”或“w”方式打开,第二个文件需要“读写”文件,用“rb+”或“r+”方式打开。

   两个函数的代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
void   input()
{
     FILE  *fp;
     int  i;
     STU s;
     if ((fp =  fopen (“student.dat”, “wb”)) == NULL)
     {
             printf (“打开文件失败\n”);
             exit (0);
     }
     for (i = 0; i <= 9; i++)
     {
          scanf (“%s”, s.name);
          scanf (“%d%d%d”, &s.score[0],&s.score[1],&s.score[2]);
     fwrite (&s,  sizeof (STU), 1, fp);
     }
     fclose (fp);
}
void   calculate()
{
     FILE  *fp;
     int  i;
     STU s;
     if ((fp =  fopen ( "student.dat" "r+" )) == NULL)
     {
         printf ( "打开文件失败\n" );
         exit (0);
     }
     for (i = 0; i <= 9; i++)
     {
         fseek (fp,  sizeof (STU)*i, 0);
         fread (&s,  sizeof (STU), 1, fp);
         s.sum = s.score[0] + s.score[1] + s.score[2];
         fseek (fp, -2, 1);
         fwrite (&s.sum, 2, 1, fp);
     }
     fclose (fp);
}




本文转自infohacker 51CTO博客,原文链接:http://blog.51cto.com/liucw/1171369



相关文章
|
2月前
|
算法 数据可视化 数据挖掘
基于EM期望最大化算法的GMM参数估计与三维数据分类系统python源码
本内容展示了基于EM算法的高斯混合模型(GMM)聚类实现,包含完整Python代码、运行效果图及理论解析。程序使用三维数据进行演示,涵盖误差计算、模型参数更新、结果可视化等关键步骤,并附有详细注释与操作视频,适合学习EM算法与GMM模型的原理及应用。
|
9月前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
798 55
|
8月前
|
机器学习/深度学习 人工智能 算法
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
眼疾识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了4种常见的眼疾图像数据集(白内障、糖尿病性视网膜病变、青光眼和正常眼睛) 再使用通过搭建的算法模型对数据集进行训练得到一个识别精度较高的模型,然后保存为为本地h5格式文件。最后使用Django框架搭建了一个Web网页平台可视化操作界面,实现用户上传一张眼疾图片识别其名称。
475 5
基于Python深度学习的眼疾识别系统实现~人工智能+卷积网络算法
|
4月前
|
存储 监控 算法
基于 C# 的局域网计算机监控系统文件变更实时监测算法设计与实现研究
本文介绍了一种基于C#语言的局域网文件变更监控算法,通过事件驱动与批处理机制结合,实现高效、低负载的文件系统实时监控。核心内容涵盖监控机制选择(如事件触发机制)、数据结构设计(如监控文件列表、事件队列)及批处理优化策略。文章详细解析了C#实现的核心代码,并提出性能优化与可靠性保障措施,包括批量处理、事件过滤和异步处理等技术。最后,探讨了该算法在企业数据安全监控、文件同步备份等场景的应用潜力,以及未来向智能化扩展的方向,如文件内容分析、智能告警机制和分布式监控架构。
117 3
|
3月前
|
算法 5G 定位技术
高低频混合组网系统中基于地理位置信息的信道测量算法matlab仿真
本内容展示了一种基于地理位置信息的信道测量算法,适用于现代蜂窝系统,尤其在毫米波通信中,波束对准成为关键步骤。算法通过信号传播模型和地理信息实现信道状态测量,并优化误差提升准确性。完整程序基于Matlab2022a运行,无水印效果,核心代码配有中文注释及操作视频,适合深入学习与应用开发。
|
3月前
|
机器学习/深度学习 监控 算法
面向办公室屏幕监控系统的改进型四叉树屏幕变化检测算法研究
本文提出一种改进型四叉树数据结构模型,用于优化办公室屏幕监控系统。通过动态阈值调节、变化优先级索引及增量更新策略,显著降低计算复杂度并提升实时响应能力。实验表明,该算法在典型企业环境中将屏幕变化检测效率提升40%以上,同时减少资源消耗。其应用场景涵盖安全审计、工作效能分析及远程协作优化等,未来可结合深度学习实现更智能化的功能。
68 0
|
6月前
|
存储 人工智能 算法
通过Milvus内置Sparse-BM25算法进行全文检索并将混合检索应用于RAG系统
阿里云向量检索服务Milvus 2.5版本在全文检索、关键词匹配以及混合检索(Hybrid Search)方面实现了显著的增强,在多模态检索、RAG等多场景中检索结果能够兼顾召回率与精确性。本文将详细介绍如何利用 Milvus 2.5 版本实现这些功能,并阐述其在RAG 应用的 Retrieve 阶段的最佳实践。
1346 1
通过Milvus内置Sparse-BM25算法进行全文检索并将混合检索应用于RAG系统
|
6月前
|
算法 数据安全/隐私保护
基于二次规划优化的OFDM系统PAPR抑制算法的matlab仿真
本程序基于二次规划优化的OFDM系统PAPR抑制算法,旨在降低OFDM信号的高峰均功率比(PAPR),以减少射频放大器的非线性失真并提高电源效率。通过MATLAB2022A仿真验证,核心算法通过对原始OFDM信号进行预编码,最小化最大瞬时功率,同时约束信号重构误差,确保数据完整性。完整程序运行后无水印,展示优化后的PAPR性能提升效果。
140 14
|
7月前
|
算法 安全 Go
公司局域网管理系统里的 Go 语言 Bloom Filter 算法,太值得深挖了
本文探讨了如何利用 Go 语言中的 Bloom Filter 算法提升公司局域网管理系统的性能。Bloom Filter 是一种高效的空间节省型数据结构,适用于快速判断元素是否存在于集合中。文中通过具体代码示例展示了如何在 Go 中实现 Bloom Filter,并应用于局域网的 IP 访问控制,显著提高系统响应速度和安全性。随着网络规模扩大和技术进步,持续优化算法和结合其他安全技术将是企业维持网络竞争力的关键。
143 2
公司局域网管理系统里的 Go 语言 Bloom Filter 算法,太值得深挖了
|
9月前
|
存储 缓存 监控
局域网屏幕监控系统中的Python数据结构与算法实现
局域网屏幕监控系统用于实时捕获和监控局域网内多台设备的屏幕内容。本文介绍了一种基于Python双端队列(Deque)实现的滑动窗口数据缓存机制,以处理连续的屏幕帧数据流。通过固定长度的窗口,高效增删数据,确保低延迟显示和存储。该算法适用于数据压缩、异常检测等场景,保证系统在高负载下稳定运行。 本文转载自:https://www.vipshare.com
245 66

热门文章

最新文章