请在第一周做业的基础上,继续完成:找出给定的文件中数组的最大值及其对应的最小下标(下标从0开始)。并将最大值和对应的最小下标数值写入文件。数组
请创建以本身英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。函数
在不删除原有文件内容的状况下,将最大值和对应的最小下标数值写入文件。学习
#include<stdio.h> #include<stdlib.h> int main(void) { FILE*fp; int i,j,n=0; int a[10]; if((fp=fopen("C:\\Users\\Administrator\\Desktop\\做业\\zhangman.txt","r+"))==NULL) /*打开文件*/ { printf("File open error!\n"); exit(0); } for(i=0;i<6;i++) /*文件处理(逐个读入和处理数据)*/ { fscanf(fp,"%d%c",&a[i]); /*从文件中读入数据储存到 a 中 */ printf("%d%c",a[i]); } j=a[0]; for(i=0;i<6;i++) { if(j<a[i]) { j=a[i]; n=i; } } printf("\n%d %d",j,n); fprintf(fp,"\n%d %d",j,n); /*将最大值及最大值的最小下标写入文件中 */ if(fclose(fp)) /*关闭文件*/ { printf("Can not close the file!\n"); exit(0); } return 0; }
第一步:定义文件指针,整数和数组
第二步:打开文件逐个读入和处理数据
第三步:运用for语句循环从文件中读入数据储存到 a 中
第四步:运用for语句循环比较数的大小,直到找到最大值为止
第五步:将最大值及最大值的最小下标写入文件中
第六步:关闭文件打印结果设计
问题1:不懂文件指针的用法
解决方法:一直看书,而后查资料,最后了解一点皮毛指针
问题2:不知道怎么把文件用到代码中来
解决方法:看书上的例题,而后试着编写调试
问题3:对于“fscanf()”和“fprintf()”的用法有点陌生
解决方法:翻看资料,知道了"fscanf()"的功能是把磁盘文件数据读出保存到变量(内存),而“fprintf()”的功能是将数据和字符等写入文件code
问题4:不知道为何要把"r"改为"r+"
解决方法:个人代码是对照着书上写的,可是就是错的,后来看了其余同窗的博客,发现他们用的是“r+”,而后我便翻书看,才知道“r”是打开文本文件进行只读,而“r+”是打开文本文件进行读/写, 而咱们的文件须要写,因此用“r+”blog
周/日期 | 这周所花的时间 | 代码行数 | 学到的知识点简介 | 目前比较迷惑的问题 |
---|---|---|---|---|
2/25-3/3 | 三天 | 45 | 数组的认识及用法 | 数组长度的理解 |
3/4-3/10 | 两天 | 37 | 编写程序时处理文件 | fscanf与fprintf的具体用法 |
本周咱们学习了到文件的概念,并深刻学习从给定的文件中读取数据并进行数据处理,主要包括定义文件指针(FILE型)fp、打开文件,从文件读取数据和关闭文件等操做。其中FILE能够看作是新的数据类型,用来表示文件。fopen(),fscanf(),fclose(),是文件操做额函数,stdio.h中定义。其中,fscanf()的功能是把磁盘文件数据读出保存到变量中。 另外还初步学习到了关于指针的概念,关于这个知识点我还须要进一步学习了解。内存
感悟:其实最初听课时候以为很难感受一点也不理解,可是后来通过反复去看教科书再尝试编写代码的时候就发现本身能够理解了,因此我以为仍是坚持吧,哪怕一开始不懂不表明永远不会理解。博客