Считайте файл и поместите массив в двумерный массив с помощью fscanf и прочитайте текст из указанной строки c в C - PullRequest
0 голосов
/ 24 апреля 2020

У меня есть задача. Я должен создать функцию, которая имеет определенные c аргументы (int readArray (FILE * wp, char * name, int n, double M [n] [n]). Я должен прочитать имя массива из файла и поместить в массив указателей, тогда я должен прочитать массив и поместить их значение в массив. Я пытаюсь запустить свою программу, но я получаю ошибку сегментации.

Также в моем файле у меня есть второй массив, так что Я должен знать, как поместить их в другой массив (arr2), но я должен прочитать из пятой строки. Как это сделать? Я думаю об использовании scanf, и в этом scanf я бы спросил пользователя, из какой строки он хочет читать, но я не знаю, как это сделать. Или, может быть, я должен попытаться обнаружить строку, и если я обнаружу вторую строку, я бы прочитал из второй строки, я получаю задачу. Я должен создать функцию, которая имеет указать c аргументы (int readArray (FILE * wp, char * name, int n, double M [n] [n]). Я должен прочитать имя массива из файла и поместить в массив указателей, затем я должен прочитать массив и положить их значение в массив. Я пытаюсь запустить свою программу, но я получить ошибку сегментации.

Кроме того, в моем файле есть второй массив, поэтому я должен знать, как поместить их в другой массив (arr2), но я должен прочитать из пятой строки. Как это сделать? Я думаю об использовании scanf, и в этом scanf я спрашиваю пользователя, с какой строки он хочет прочитать, но я не знаю, как это сделать. Или, может быть, я должен попытаться обнаружить строку, и если я обнаружу вторую строку, я бы прочитал из второй строки

Это моя программа

#include <stdio.h>
#include <stdlib.h>


int readArray(FILE *wp, char *name, int n, double M[n][n])
{
    int i = 0, j;
    fscanf(wp, "%s", &name[0]);
    printf("Print name: %s", name);
    return 0;
    for (i = 0; i < n; ++i)
        for (j = 0; j < n; ++j)
            fscanf(wp, "%lf", &M[i][j]);
    printf("Print array: %s", name);

}

int main (int argc, char *argv[])
{
    FILE *wz;                         
    int n = 3;
    char *name[1];
    char *name2[1]; 
    double arr[n][n];
    double arr2[n][n];


    if (argc != 2) {                                
    printf("Wrong arguments number\n");
    printf("I should run this way:\n");
    printf("%s source\n",argv[0]);
    exit(1);
    }

    if( (wz= fopen(argv[1],"r")) == NULL) {
        printf("Open error %s\n", argv[1]);
        exit(1);
    }

    readArray(wz, *name, n, arr);
    readArray(wz, *name2, n, arr2);    

    int fclose(FILE *wz);
    int fclose(FILE *wc);

    return 0;
}

Это мой текстовый файл, который я получить:

arr1
9 8 7
6 5 4
3 2 1
arr2
1 2 3
4 5 6
7 8 9
...