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 文件 文件没什么问题
posted @ 2019-03-07 20:26  xiaoliangliang  阅读(209)  评论(1编辑  收藏  举报