在我当前的C代码中(请参阅更新),我有一个函数接收这两个参数:
char** matrix, int maxmax是存储在矩阵中的字符串数量。如果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];
}发布于 2017-08-26 21:36:48
printf("%lu", sizeof(matrix[0])); --这将打印char *的大小
matrix = realloc(matrix, sizeof(matrix[0]));将根据系统只分配char *字节的大小-4或8。
sizeof != strlen和sizeof不是函数--它是在完全过程中评估的。
我建议-你应该先开始学习指针(从你的代码中你根本不理解它们),然后转到更复杂的东西上。
https://stackoverflow.com/questions/45899539
复制相似问题