【算法】系统和文件操作

简介:

小续

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

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




文件连接


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

   实例解析:

   该实例要求从命令行指定两个文件名,故需要定义带参数的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



相关文章
|
1月前
|
机器学习/深度学习 人工智能 监控
AI算法分析,智慧城管AI智能识别系统源码
AI视频分析技术应用于智慧城管系统,通过监控摄像头实时识别违法行为,如违规摆摊、垃圾、违章停车等,实现非现场执法和预警。算法平台检测街面秩序(出店、游商、机动车、占道)和市容环境(垃圾、晾晒、垃圾桶、路面不洁、漂浮物、乱堆物料),助力及时处理问题,提升城市管理效率。
AI算法分析,智慧城管AI智能识别系统源码
|
2月前
|
机器学习/深度学习 算法
m基于深度学习的QPSK调制解调系统相位检测和补偿算法matlab仿真
m基于深度学习的QPSK调制解调系统相位检测和补偿算法matlab仿真
42 2
|
3月前
|
算法 5G
基于LDPC编译码和FP-MAP球形检测算法的协作MIMO系统误码率matlab仿真
基于LDPC编译码和FP-MAP球形检测算法的协作MIMO系统误码率matlab仿真
|
3月前
|
传感器 机器学习/深度学习 人工智能
人工智能算法和系统的进化
人工智能算法和系统的进化
35 0
|
4月前
|
编解码 算法 固态存储
Visual C++ 6.0环境开发PACS影像系统的技术指标和精准算法
Visual C++ 6.0环境开发PACS影像系统的技术指标和精准算法
30 0
|
5月前
|
自然语言处理 算法 测试技术
【数据结构原理】系统生命周期 | 算法规范 | 笔记
【数据结构原理】系统生命周期 | 算法规范 | 笔记
43 0
|
1月前
|
机器学习/深度学习 算法
m基于深度学习的64QAM调制解调系统相位检测和补偿算法matlab仿真
MATLAB 2022a仿真实现了基于深度学习的64QAM相位检测和补偿算法,有效应对通信中相位失真问题。通过DNN进行相位检测和补偿,降低解调错误。核心程序生成随机信号,模拟AWGN信道,比较了有无相位补偿的误码率,结果显示补偿能显著提升性能。
27 8
|
1月前
|
算法 搜索推荐 Java
利用java编写的项目设备调配系统代码示例(内含5种设备调配的算法)
利用java编写的项目设备调配系统代码示例(内含5种设备调配的算法)
13 1
|
1月前
|
机器学习/深度学习 算法
m基于深度学习的32QAM调制解调系统相位检测和补偿算法matlab仿真
m基于深度学习的32QAM调制解调系统相位检测和补偿算法matlab仿真
27 1
|
1月前
|
搜索推荐 算法 Java
基于springboot+vue协同过滤算法的电影推荐系统
基于springboot+vue协同过滤算法的电影推荐系统