Для выполнения задания в школе мы должны использовать структуры для создания матриц, которые могут хранить бесконечное количество баллов для бесконечного количества матриц.(теоретически бесконечно)
Для задания я решил использовать calloc и realloc.То, как идут размеры для матрицы: она удваивается в размере каждый раз, когда ее предел достигает своих точек (поэтому она начинается с 1, затем идет до 2, затем 4 и так далее).Он также удваивается по размеру каждый раз, когда добавляется матрица.
В этом моя проблема.После того, как начальная матрица добавлена, и она добавляет второе имя матрицы и точки, она дает мне следующее:
B???????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????
B - это та часть, которую я хочу (как я использую strcmp позже), но?знаки не должны быть там.(очевидно)
Я не уверен, почему именно это делает.Поскольку код является модульным, его части не очень легко показать, как именно это происходит.
Примечание: я могу получить доступ к точкам матрицы с помощью метода: MyMatrix[1].points[0].x_cord;
(это только пример)
Пример кода, вызывающего проблему:
STRUCTS:
struct matrice {
char M_name[256];
int num_points[128];
int set_points[128];
int hasValues[1];
struct matrice_points * points;
} * MyMatrix;
struct matrice_points {
int set[1];
double cord_x;
double cord_y;
};
Функция матрицы установки:
void setupMatrix(){
MyMatrix = calloc(1, sizeof(*MyMatrix));
numMatrix = 1;
}
GrowМатричная функция:
void growMatrix(){
MyMatrix = realloc(MyMatrix, numMatrix * 2 * sizeof(*MyMatrix));
numMatrix = numMatrix * 2;
}
Добавить матричную функцию, которая выводит эту проблему после однократного увеличения матрицы.
void addMatrix(char Name, int Location){
int exists = 0;
int existsLocation = 0;
for (int i = 0; i < numMatrix; i++){
if (strcmp(MyMatrix[i].M_name, &Name) == 0){
exists = 1;
existsLocation = i;
}
}
*MyMatrix[Location].M_name = Name;
printf("Stored Name: %s\n", MyMatrix[Location].M_name);
*MyMatrix[Location].num_points = 1;
*MyMatrix[Location].set_points = 0;
*MyMatrix[Location].hasValues = 1;
MyMatrix[Location].points = calloc(1, sizeof(*MyMatrix[Location].points));
}