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

设计思路:

1580249-20190307200047115-228250839.png
屏幕截图:

1580249-20190307200116653-499061860.png

1580249-20190307200121572-520710309.png

遇到的问题:

这题开始写了一个代码但是说关闭文件失败,也不知到怎么回事搞了好久
到后面又出了一个错误
[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文件文件没什么问题

转载于:https://www.cnblogs.com/xiao--liang/p/10492062.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值