作业——3
第二周作业
一、基础作业
在第一周作业的基础上,继续完成:找出给定的文件中数组的最大值及其对应的最小下标(下标从0开始)。并将最大值和对应的最小下标数值写入文件。
输入
请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。
输出
在不删除原有文件内容的情况下,将最大值和对应的最小下标数值写入文件。
实验代码
#include<stdio.h>
#include<stdlib.h>
int main (void)
{
FILE * fp;
int a[10];
int i, m, index = 0;
if((fp=fopen("E:\\SuXiaoLong.txt","r+"))==NULL)
{
printf("File open error!\n");
exit(0);
}
for(i=0; i<6; i++)
{
fscanf(fp, "%d%c", &a[i]);
printf("%d%c", a[i]);
}
m = a[0];
for(i=0; i<6; i++)
{
if(m<a[i])
{
m = a[i];
index = i;
}
}
printf("%d %d", m, index);
fprintf(fp,"%d %d", m, index);
if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
}
return 0;
}
设计思路
本题调试过程碰到问题及解决方法
- 1、总是显示“File open error”。
解决方法:首先文件是放在E盘中,多次修改代码无用,和助教对比至改至几乎一样都没用,然后发现我在文件属性中发现文件名后多了个“txt”,也就是我自己多打了个后缀......然后把后缀去掉后发现还是打不开,又经历多次尝试,最后助教告诉我放C盘难打开(此时文件被多次尝试放入了C盘中),放到E盘后不再显示“File open error”了,然后出现了新的错误......- 2、文件只读不写。
解决方法:将代码中的“r”改为“r+”,“r+”为读写,应题目要求,应该用读写。- 3、文件输出答案和文本毫无关系,是乱七八糟的数字。
解决方法:多次尝试发现原代码“fscanf(fp, "%d", &a[i]);”应改成“fscanf(fp, "%d%c", &a[i]);”,因为“%c”格式对应的是单个字符,所以在输入多个字符的时候,它只会读取第一个字符,之后的字符是无法读入完成任务的。- 4、不知道算什么问题,就是有些地方要用fpintf输入到文件中......
- 5、还有很多小错误,比如分号没有在英文输入法的情况下打,打出的是“:”冒号,还有就是忘记打分号......
运行结果截图
二、学习进度条
周/日期 | 这周所花的时间 | 代码行 | 学到的知识点简介 | 目前比较迷惑的问题 |
第二周 | 4 hours | 35 | 用c语言程序读取电脑中的文本文件并对其进行基础操作 | ... |
三、学习感悟
c语言是一门需要耐心的课程......耐心的找错误改错误,尽管错误的点极其愚蠢然后改正后又发现了自己根本不知道错在哪的错误,还是要耐心找错误,然后改正,问大佬,慢慢把程序逐条改正,完善......(扶额)