У меня есть двумерный массив структур, которым я назначаю строки, вот моя структура.
struct node {
char* value;
};
Вот мое распределение (я новичок в C, поэтому я не уверен, правильно ли это), но всегда будет 35 столбцов, но может быть миллионы строк (сейчас у меня было только 3 для тестирования)
const int rows=3;
struct node ** arrayofnodes[rows][35];
for(int i=0; i<rows; i++) {
array[i] = malloc(test * sizeof array[0]);
for(int j=0; j<35; j++) array[i][j] = malloc(sizeof array[0][0]);
}
Затем я читаю символ за символом из файла csv и получаю временную строку и присваиваю значение temp нужной позиции, используя это ниже.
//int row and count are defined in my while loop I have for counting commas(or what col I am on) then new lines for the rows
arrayofnodes[row][count]->value=strdup(temp);
printf("%s \n", arrayofnodes[row][count]->value);
printf("%d %d \n",row, count );
Когда я назначаю как выше, это, кажется, работает. Я добавил эти операторы печати, чтобы убедиться, что он назначает правильные значения.
Например, приведенный выше выводит что-то вроде
Red
0 0
И это правильно для этой позиции.
Но потом, после того как я выполнил все свои поручения. Я поместил оператор print printf("%s \n", arrayofnodes[0][0]->value);
, чтобы проверить, могу ли я получить 1-е значение, как показано выше, которое должно быть «Красным».
В моем терминале выводится "@` ?? " или "@Pz?" или просто любой случайный вывод. Я пробовал это на кучу разных позиций, кроме 0,0, но все они получают одинаковый результат. Я думаю, я просто запутался, почему операторы print работают сразу после того, как я их назначил, но не в конце моего кода, когда я вызываю их позже.