В других функциях моей программы я читаю данные из файла и затем записываю их в двумерный массив. Этот 2D массив указывается в структуре с использованием члена структуры, который является двойным указателем. Затем я использую этот 2D-массив в новой функции.
В этой функции я пытаюсь открыть новый файл в режиме записи, а затем записать содержимое массива 2d в файл, используя double для l oop. Однако эта часть не работала вообще. Когда я пытался распечатать каждый отдельный элемент, он правильно напечатал бы первый элемент массива. Но после этого каждый второй элемент представлял собой некоторый случайный символ, такой как l, @,?, H, который представлял собой символы, которые совершенно не связаны и никогда не сохранялись в массиве.
outfile = fopen( "test.txt", "w");
//error handling
if(outfile == NULL)
{
printf("Error!");
exit(1);
}
// printf("\nfirst element %c\n",u->unipointer[4][3]);
//this aims to print out every element in the 2d array
for (int i=0; i<u->rows; i++){
for (int j=0; j<u->cols; j++){
printf("%c",u->unipointer[i][j]);
}
}
printf("\nfirst element %c\n",u->unipointer[0][0]);
printf("first element %c\n",u->unipointer[0][0]);
fclose(outfile);
}
Двойной цикл for не печатается что-нибудь. Когда я печатаю u-> unipointer [0] [0] в первый раз, я получаю '.' который является фактическим значением, которое хранится в 2D массиве. Когда я печатаю его второй раз, точно таким же образом, я получаю «H» по какой-то причине. Это то же самое для любого другого элемента в двумерном массиве, который я пытаюсь распечатать по отдельности.
Когда я распечатываю ячейку памяти этих двух элементов, они различаются. Однако каждый раз, когда я запускаю программу, область памяти в первой строке печати не изменяется, а вторая строка меняется каждый раз.