Я создаю компрессор изображений для проекта. Я генерирую коды для значений на изображении таким образом, чтобы для каждого значения серого (от 0 до 254) в массиве имелся код char *, называемый codeArray (Huffman Encoding).
Требуется наличие функции, которая возвращает беззнаковый символ *. Я просматриваю каждый пиксель и конвертирую значение серого этого пикселя в код, используя codeArray.
Мне нужно, чтобы массив unsigned char динамически увеличивался по мере того, как большее количество значений серого преобразуется и объединяется в конец массива.
unsigned char* encodedString = malloc(sizeof(char));
int width = image->width; //width and height of image structure
int height = image->height;
int row, col;
for(row = 0; row<height; row++)
for(col = 0; col<width; col++)
{
int value = image->pixel[row][col]; //gets the grey value
encodedString = realloc(encodedString, (strlen(encodedString)+strlen(codeArray[value])));
strcat(encodedString, codeArray[value]);
}
Я попытался выполнить это с оператором print после strcat и обнаружил, что он печатается до тех пор, пока не появятся 24 символа, затем начнется печать мусора и сбой Seg.
Помощь оценена!