博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【算法】系统和文件操作
阅读量:7095 次
发布时间:2019-06-28

本文共 1827 字,大约阅读时间需要 6 分钟。

小续

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

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

 


 

文件连接

 

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

   实例解析:

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

   程序代码:

#include 
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个学生的三科成绩并存入文件,再写一个函数,读取这些分数、计算总分并将总分写入文件。

   实例解析:

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

typedef  struct{    char name[10];    int score[3];    int sum;}STU;

 

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

   两个函数的代码如下:

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);}

 

 

 

 

本文出自 “” 博客,请务必保留此出处

转载地址:http://tdxql.baihongyu.com/

你可能感兴趣的文章
利用MVC Chart 打造后台图表、前端图表(转)
查看>>
【Java】使用CSVUtils生成文件并供下载
查看>>
用户态和内核态
查看>>
VR+生物plus 遐想
查看>>
Java并发编程:线程控制
查看>>
今天聊一聊Java引用类型的强制类型转换
查看>>
把数据保存到数据库archives表时出错,请检查
查看>>
JavaSE基本语法、数据类型、操作符等:int、long、Integer、Long、if、else、for、while...
查看>>
解析XML文件
查看>>
牛客练习赛46
查看>>
netty线程模型
查看>>
Codeforces Round #237 Div.2 A
查看>>
initrd.gz的解压和制作
查看>>
LeetCode:Edit Distance(字符串编辑距离DP)
查看>>
设计流程及工具记录
查看>>
关于CDialogBar的编程
查看>>
吹きすさぶ风の中で
查看>>
对象引用前加const 报错
查看>>
linux 0.11 源码学习(十一)
查看>>
编码风格——linux内核开发的coding style
查看>>