//인코딩
# include & ltstdio.h & gt
# include & ltstring.h & gt
//문자열 복사
Void copy 1(char * 접두어, char *s, int I, int j)
{
Int k;;
For(k = 0;; K & lt20; K++)
접두어 [k] =' \ 0';
For(k = I;; K<I+j; K++)
접두어 [k-I] = s [k];
}
Void main ()
{
Char s[30], prefix[30], dic[20][30]={, a, b, C };;
Int I, j, k, m, n;
I = 0;; J =1; K = 4;; M = 0;;
Printf (문자열을 입력하십시오. \ n);
획득;
While (나 & ltstrlen(s))
{
Copy 1 (접두어 s, I, j);
For (n =1; N & ltk;; N++)
{
If(strcmp (접두어, dic[n])==0)
{
J = j+1;
M = n;;
If ((I+j) < =strlen(s))
Copy 1 (접두어 s, I, j);
기타
{
Strcpy (접두어,);
}
}
}
Printf(%d, m) :
If(strlen (접두사)! =0)
{
Strcpy(dic[k], 접두어);
Printf(%s \n, DIC [k]);
}
K = k+1;
I = I+j-1;
J =1;
}
}
//디코딩
# include & ltstdio.h & gt
# include & ltstring.h & gt
# n 20//최대 문자열 길이 정의
# m 20//사전의 최대 코드 스트림 수 정의
# L 20 정의
구조적 자류
{
Char w [n];
} word [l];
Void main ()
{
Int 코드 [m]; //코드 워드 스트림 저장
//int code[]={ 1, 2,3,4,7,3};
Int I, k, t;
Int j;; //사전에 문자열을 추가합니다
Int cW// 현재 코드 단어
Int pW// 이전 코드 단어
부호 없는 문자 c; //현재 문자
Char p [20]; //접사 기호 문자열
Word[ 1]. W [0] =' a'; //입력 사전 초기화
단어 [2]. W [0] =' b';
단어 [3]. W [0] =' c';
J = 4;;
//디코딩할 코드 스트림을 출력합니다.
Printf(\n 코드 스트림 번호 입력:);
Scanf(%d, & AMPK);
Printf(\n 코드 스트림 번호 입력:);
For(I = 0;; 나 & ltk;; I++)
Scanf(%d, (코드+I));
CW = 코드 [0];
Printf(\n 출력 스트림: %s, word[cW]. W);
PW = cW
For (I =1; 나 & ltk;; I++)
{
CW = 코드 [I];
If(cW & lt;; J)
{
Printf(\n 출력 스트림: %s, word[cW]. W); //문자 스트림으로 내보내기
C=word[cW] 입니다. W [0];
Strcpy(p, (const char *)word[pW]. W);
T = strlen ((constchar *) p);
P [t] = c;
P [t+1] =' \ 0';
Strcpy(word[j].w, (constchar *) p);
J = j+1;
PW = cW
}
기타
{
Strcpy(p, (const char *)word[pW]. W);
C=word[pW] 입니다. W [0];
T = strlen ((constchar *) p);
P [t] = c;
P [t+1] =' \ 0';
Strcpy(word[j].w, (constchar *) p);
Printf(\n 출력 스트림: %s, p);
J = j+1;
PW = cW
}
}
For (I =1; 나 & ltj;; I++)
Printf(\n 사전은 %s, word[i] 입니다. W);
Printf(\n 끝났어 \ n);
}