У меня есть следующий код ниже. Однако он может успешно конвертировать файлы .txt в сжатые файлы LZW, когда я запускаю его на .jpg (что теоретически должно работать). Первый символ char / int, который он читает, это «255», затем strcat () пытается объединить k_str с wk во втором цикле, который теоретически должен быть «216 или \ 330». Wk_ptr == "\ 377", неполная последовательность \ 330. Я не уверен, в чем проблема.
Спасибо
void encode(FILE *in, FILE *out) {
unsigned char w[ENTRYSIZE] = "";
unsigned char *w_ptr = w;
unsigned char wk[ENTRYSIZE] = "";
unsigned char *wk_ptr;
unsigned char k;
unsigned char k_str[2];
unsigned int c;
unsigned int i;
for (i = 0; i < ASCII; i++) {
dict[i][1] = i;
dict[i][0] = 1;
}
while ((c = fgetc(in)) != EOF) {
k_str[0] = c;
k_str[1] = '\0';
w_ptr = w;
strcpy(wk, w_ptr);
strcat(wk, k_str);
wk_ptr = wk;
if (check_dict(wk_ptr, 0) == 1) {
strcpy(w, wk_ptr);
} else {
write12(out, check_dict(w_ptr, 1));
add_dict(wk_ptr);
k_str[0] = c;
k_str[1] = '\0';
strcpy(w, k_str);
}
}
write12(out, check_dict(w_ptr, 1));
flush12(out);
write12(out, check_dict(w_ptr, 1));
}