Если вы пытаетесь скопировать строковый буфер данных, а не только указатель на этот буфер, вам придется использовать операцию копирования в память или, предпочтительно, стандартную библиотечную функцию, предназначенную для таких целей, как strcpy
,или strncpy
.Таким образом, предполагая, что tagid[trigger]
ссылается на блок памяти, который является массивом типа char
, вы можете сделать следующее:
#include <string.h>
//tagid is a two-dimensional array of chars of ROWSIZE x COLUMNSIZE
char** tagid;
tagid = malloc(sizeof(char*) * COLUMNSIZE);
for (int i=0; i < COLUMNSIZE; i++)
{
tagid[i] = malloc(sizeof(char) * ROWSIZE);
}
//copy some data into your array at row index "trigger"
int trigger = SOMEVALUE;
strncpy(tagid[trigger], row[i], ROWSIZE);
//free the memory you've allocated for your two dimensional array
for (int i=0; i < COLUMNSIZE; i++)
{
free(tagid[i]);
}
free(tagid);
Значение ROWSIZE должно быть достаточно большим, чтобы содержатьВаша самая большая строка плюс завершающий NULL, иначе копия будет усечена с использованием strncpy
, или данные переполнят границы массива и зафиксируют что-то еще, что вам не нужно, если вы используете strcpy
.