gpt4 book ai didi

c - 当我尝试创建二维结构数组时出现段错误

转载 作者:行者123 更新时间:2023-11-30 14:45:20 28 4
gpt4 key购买 nike

为什么我会在突出显示的行处出现段错误。我访问二维数组是否错误? tempMap 是一个 1d 数组,其中包含 2d 数组的所有值,例如 [0,1,0,0,0,0,1,0] ,因为我知道行数和列数,所以我试图将其变成二维空间数组(这是我的结构)。非常感谢任何帮助。

int opt;
char *filename = NULL;
Space **map;
char *tempMap;

if (i != 0){
int col = getCol(filename);
int row = getRow(filename, col);
printf("%d x %d\n", row, col);
map = create_map(row, col, filename);
tempMap = populate_map(map, filename);
int curIndx=0;
for (int l = 0; l < 100; ++l) {
printf("%c", tempMap[l]);
}
for (int j = 0; j < row; ++j) {
for (int k = 0; k < col; ++k) {
map[j][k] = makeNewSpace(tempMap[curIndx],row,col); //<-----------This Line
curIndx++;
}
}
}

这里还有 makeNewSpace()

Space makeNewSpace(char character, int row, int column){
Space space;
space.character = character;
space.isVisited = false;
space.row= row;
space.column = column;
return space;
}

这是我为二维数组分配空间的地方。

Space **create_map( int row, int col, char *fileName) {
Space *values = calloc(row * col, 2* sizeof(char) + (4 * sizeof(int)));
Space **map = malloc(row * sizeof(char *));
for (int i = 0; i < row; ++i) {
map[i] = values + i * col;
}
return map;
}

最后这是我的结构

typedef struct Space{
char character;
bool isVisited;
int row;
int column;
}Space;

最佳答案

不确定这是否是您想要的,动态分配的二维空间结构数组。

#include <stdio.h>
#include <stdlib.h>

// Space struct definition
typedef struct {
int data;
} Space;

int main() {
int i;

// Allocate memory for the rows
Space** space2d = malloc(sizeof(Space*) * 3);

// Allocate memory for the columns
for(i = 0; i < 3; ++i) {
space2d[i] = malloc(sizeof(Space) * 5);
}

// Example setting one of the struct's members inside the 2d array
space2d[0][0].data = 100;

printf("%d\n", space2d[0][0].data);

// Freeing the 2d array
for(i = 0; i < 3; ++i)
free(space2d[i]);

free(space2d);
}

关于c - 当我尝试创建二维结构数组时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53121915/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com