/* * lz77 * by niy@cc.utsunomiya-u.ac.jp on July 23, 1996 */ #include "lz77.c" int main(void){ int i; long k; unsigned char orig[500], code[1000], new[500]; printf("--- LZ77符号によるデータ圧縮 ---\n"); printf("テキストを入力して下さい(入力例 aaaabbbbccdde)\n"); scanf("%s", orig); k = enLZ77(code, 1000L, orig, (long)strlen(orig)); if (k < 0) { printf("符号化できませんでした\n"); exit(1); } printf("\nテキストの長さ textlen = %d\n", strlen(orig)); printf("符号の長さ codelen = %ld\n", k); printf("圧縮率 codelen/textlen = %5.1f (%%)\n\n", k*100.0/strlen(orig)); k = deLZ77(new, 500L, code, k); if (k < 0) { printf("復号できませんでした\n"); exit(1); } printf("復号されたテキスト: 長さ %ld 文字\n", k); for (i = 0; i < k; i++) printf("%c", new[i]); printf("\n"); return 0; }