【发布时间】:2023-04-02 02:30:02
【问题描述】:
在我当前的 C 代码中(请参阅更新),我有一个接收这两个参数的函数:
char** matrix, int max
max 是存储在矩阵中的字符串数量。如果 max 是奇数,我需要将 max 增加 1 并重复矩阵的最后一个元素。
我需要有关如何重新分配此矩阵以复制最后一个元素的帮助。根据我找到的文档,我首先想到解决这个问题,realloc,接受参数void *ptr, size_t size,其中第一个元素是一维数组?
我应该如何处理这个二维矩阵?
更新
char* function(char** matrix, int max) {
if(max % 2 != 0) {
max = max + 1;
printf("%lu", sizeof(matrix[0]));
matrix = realloc(matrix, sizeof(matrix[0]));
}
if(max == 2) {
...
char* ret = malloc(BLOCK_SIZE);
strncpy(ret, buf2, BLOCK_SIZE-1);
return(ret);
}
char* submatrix[max/2];
for(int x=0; x<max; x=x+2) {
...
submatrix[x/2] = buf2;
}
}
更新 2
if(max % 2 != 0) {
max = max + 1;
char* tmp[max];
for(int x=0; x<max-1; x++)
tmp[x] = matrix[x];
tmp[max-1] = matrix[max-2];
}
【问题讨论】:
-
"在我当前的 C 代码中" --> 发布该代码。
-
“矩阵中字符串的数量”和“重复矩阵的最后一个元素”是指矩阵的每一行吗?
-
@meowgoesthedog 是的
-
与您的代表一起,您应该知道如何发布一个好问题。
-
只要懂就行。 Stackoverflow 旨在纠正您的任何误解,而不是帮助您调试代码。 (如果我发布答案,出于同样的原因,我担心会受到影响)