2019年春季第二周作业
2019年春季学期第二周作业
基础作业
请在第一周作业的基础上,继续完成:找出给定的文件中数组的最大值及其对应的最小下标(下标从0开始)。并将最大值和对应的最小下标数值写入文件。
输入:
请建立以自己英文名字命名的txt文件,并输入数组元素数值,元素值之间用逗号分隔。
输出
在不删除原有文件内容的情况下,将最大值和对应的最小下标数值写入文件。
代码展示:
#include<stdio.h>
#include<stdlib.h>
int main ()
{
FILE *fp;
char temp;
int num[20];
int i, b, t,end, w = 0;
fp=fopen("C:\\Users\\huangyanliang.txt","a+");
fscanf(fp,"%d%c", &end,&temp);
for(i = 0;i < end;i++)
{
fscanf(fp,"%d%c", &num[i],&temp);
}
t = num[0];
for(i = 0;i < end; i++)
{
if(t < num[i])
{
t = num[i];
w = i;
}
}
fprintf(fp,"\n%d %d", t, w);
fclose(fp);
return 0;
}
设计思路:
屏幕截图:
遇到的问题:
这题开始写了一个代码但是说关闭文件失败,也不知到怎么回事搞了好久
到后面又出了一个错误
[Error] cannot convert 'const char' to 'FILE {aka _iobuf}' for argument '1' to 'int fprintf(FILE, const char*, ...)'
没遇到过这种错误emmm
然后换了一个别人的代码看能不能在我的电脑上运行,在别人的电脑可以,在我的电脑上是零错误零警告,但是文件并没有写入任何数据,有搞了好久不知道咋回事。
后面我自己又写了一个代码又可以,我也是一脸懵逼
那个在我电脑没写入数据的代码:
#include<stdio.h>
#include<stdlib.h>
int main ()
{
FILE * fp;
int num[20];
int i, t, w = 0;
if((fp=fopen("C:\\Users\\ly.txt","a+"))==NULL)//"r+"是打开文本进行读/写,书上P307有详细介绍
{
printf("File open error!\n");
exit(0);
}
for(i = 0;i < 6;i++)
{
fscanf(fp,"%d", &num[i]);//从文件中读入数据储存到 num 中
}
t = num[0];
for(i = 0;i < 6; i++)
{
if(t < num[i])
{
t = num[i];
w = i;
}
}
fprintf(fp,"\n%d %d", t, w);//将最大值及最大值的最小下标写入文件中
if(fclose(fp))
{
printf("Can not close the file!\n");
exit(0);
}
return 0;
}
学习进度条
日期 | 这周所花的时间 | 代码行数 | 所学的简介 | 目前比较困惑的问题 |
---|---|---|---|---|
9/3-15/3 | 四小时 | 200 | 文件 | 文件没什么问题 |