Я пытаюсь преобразовать свою строку в динамический массив двойников. Каждое пространство моей строки представляет собой столбец, каждый «;» представляет новую строку. Когда этот код работает, он работает только тогда, когда * F [0] [col]. Когда он добирается до * F [1] [col], он дает мне ошибку «Необработанное исключение в 0x00e4483c в CCode.exe: 0xC0000005: местоположение чтения нарушения доступа 0xcccccccc». Кто-нибудь знает, почему?Передать по ссылке 2D динамически распределенный двойной массив в C
void main(void) {
double **F = NULL;
F = malloc(row * sizeof (double *));
for (m=0; m < row;m++) {
F[m] = malloc(col * sizeof(double));
}
FParser(string, &F);
for (m=0;m<rowF;m++)
free(F[m]);
free(F);
}
void FParser(char string[256], double ***F) {
while (dummyChar_ptr != NULL) {
dummyChar_ptr = strtok(dummyChar_ptr," ");
while ((dummyChar_ptr) != NULL) {
*F[row][col] = atof(dummyChar_ptr);
dummyChar_ptr = strtok(NULL," ");
col++;
}
col=0;
row++;
strcpy(dummyChar,string);
dummyChar_ptr = strtok(dummyChar,";");
for (x=0;x<row;x++)
dummyChar_ptr = strtok(NULL,";");
}
//example String: 1 0.1 0 0; 0 1 0 0; 0 0 1 0.1; 0 0 0 0.1
Почему вы не публикуете полный код? мы не можем найти определение вашей строки и столбца. Являются ли они глобальными переменными? Возможно, проблема заключается в том, что вы разделили строку/столбец между основным и FParser. – Francis
вы можете исправить свой список кодов, я думаю, что он не содержит деклараций и закрывающей скобки, их трудно прочитать. – Anycorn