首页 > 解决方案 > 存储来自给定文件的数组长度和数组输入的问题,其中第一个整数是第一个数组的长度

问题描述

我在创建一个读取文件“data.txt”并将文件的第一个整数作为数组A的长度和文件中第二行的第一个整数作为第二个数组B的长度的程序时遇到问题. 之后我将对这两个数组进行排序,但我只需要帮助尝试从文件中获取输入并将它们存储在两个数组中。

所以文件可能如下所示:

4 5 8 6 4
3 8 5 4

第一个字符“4”表示 的长度arrayA为 4 并包含接下来的 4 个后续输入。第二行第一个字符,'3'表示长度arrayB为3.. .

int main(){
    FILE* fileP;
    int aLngth=0, int bLngth=0;
    int i=0, j=0;

    fileP = fopen("data.txt","r");

    fscanf(fileP, "%i", &aLngth);
    int arrayA[aLngth];

    for(i=0; i<=aLngth; i++){
        if(i==0){continue;}
        fscanf(fileP, "%i", &arrayA[i]);//store length a

        if(i+1>aLngth){
            fscanf(fileP, "%i", &bLngth); //store length b
            for(j=0;j<=blLngth; j++){
                 fscanf(fileP, "%i", &arrayB[j]);
            }
        }
    }

    fclose(fileP);
}

标签: carraysfile-io

解决方案


你应该在第一个循环之后有第二个循环,而不是在它里面。

没有理由跳过i==0第一个循环。

您缺少arrayB.

for循环应该使用而<不是<=在重复条件中,因为数组的最后一个索引是长度为 1。

#include <stdio.h>

int main(){
    FILE* fileP;
    int aLngth=0, int bLngth=0;
    int i=0, j=0;

    fileP = fopen("data.txt","r");

    fscanf(fileP, "%i", &aLngth);
    int arrayA[aLngth];
    for(i=0; i<aLngth; i++){
        fscanf(fileP, "%i", &arrayA[i]);
    }

    fscanf(fileP, "%i", &bLngth);
    int arrayB[bLngth];
    for(j=0;j<bLngth; j++){
        fscanf(fileP, "%i", &arrayB[j]);
    }

    fclose(fileP);
}

推荐阅读