перенести информацию из текстового файла в динамический массив - PullRequest
0 голосов
/ 20 октября 2018

Я работаю над проектом C, который требует от меня создания динамического массива и использования fscanf, чтобы заполнить его некоторыми символами в текстовом файле, пропуская при этом другие символы.

Текстовый файл выглядит как-токак это:

4

[* * 1 *]

[3 * 6 *]

[* * * *]

[2 * * 1]

Первое число 4 - это размеры блока (всегда квадрат).По сути, каждое «*» или число представляет элемент в массиве.Массив равен 1d, а размер - это общее количество * s или чисел.Таким образом, для этого примера размер массива будет 16.

Везде, где есть '*', мне нужно заполнить массив 0. В этом примере мой массив должен быть [0, 0, 1, 0, 3, 0, 6, 0, 0, 0, 0, 0, 2, 0, 0, 1]

Мой код пока:

int size;
FILE *file_in;
file_in = fopen(name, "r");
if(!file_in) printf("File was not opened".);

fscanf(file_in, "%d", &size)
printf("the size of the block is %d x %d" , size, size);

p = (int *) malloc (size*size*(sizeof(int));

char temp;
fscanf(file_in, "%*c%*c"); //skip the first bracket and space
fscanf(file_in, "%c" , temp); //store first * in temp
if (if temp == '*') p[0] = 0;
printf("the first element is %d", p[0]);

Iв конечном итоге потребуется поместить последний раздел кода в цикл, чтобы прочитать весь файл.Когда я запускаю этот код, единственное, что выводится на печать, это «Размер блока 4 * 4», и ничего больше этого.Это заставляет меня думать, что я не настраиваю динамический массив или неправильно использую malloc.ИЛИ Я не использую fscanf правильно, чтобы прочитать файл.

Кто-нибудь может указать мне правильное направление?Кроме того, я знаю, что цикл печати еще не подходит.Прямо сейчас я просто пытаюсь заставить работать любую часть массива.

...