Проблемы с хранением длины массива и входных данных массива из данного файла, где первое целое число является длиной первого массива - PullRequest
0 голосов
/ 16 января 2020

У меня проблемы с созданием программы, которая читает файл «data.txt» и принимает первое целое число файла как длину массива A и первое целое число 2-й строки в файле как длину второй массивB. Потом я буду сортировать эти два массива, но мне просто нужна помощь, чтобы попытаться получить входные данные из файла и сохранить их в двух массивах.

Таким образом, файл может выглядеть следующим образом:

4 5 8 6 4
3 8 5 4

Первый символ «4» означает, что длина arrayA равна 4 и содержит следующие 4 следующих ввода. 1-й символ второй строки, «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);
}

1 Ответ

1 голос
/ 16 января 2020

У вас должен быть второй l oop после первого, а не внутри него.

Нет причин пропускать i==0 в первом l oop.

You отсутствует объявление 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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...