• 大小: 154KB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2023-12-30
  • 语言: C/C++
  • 标签: LZW  

资源简介

用C语言实现LZW编码,之前在网上看到都是C++版的,做了修改。现在是C语言班,信息论大作业,或者C语言作业都都行

资源截图

代码片段和文件信息

#include
#include

char dic[30][50];
int n;

void init() //字典初始化
{
int i;
strcpy(dic[0]“a“); //开始时词典包含所有可能的根
strcpy(dic[1]“b“);
strcpy(dic[2]“c“);
for(i = 3; i < 30; i++) //其余为空
strcpy(dic[i]““);
}

int find(char s[]) //字典中寻找返回序号
{
int temp = -1;
int i;
for(i = 0; i < 30; i++)
{
if(strcmp(sdic[i]) == 0)
temp = i + 1;
}
return temp;
}

void code(char str[])
{
char temp[2] P[50];
int i = 1 j = 3; //j为目前字典存储的最后一个位置
temp[0] = str[0]; //取第一个字符
temp[1] = ‘\0‘;
init(); //初始化
strcpy(Ptemp); //P为前缀
printf(“编码为:“);
while(1)
{
char t[2] C[50] PC[50] t2[50];
t[0] = str[i]; //取下一字符
t[1] = ‘\0‘;
strcpy(Ct); //C为字符流中下一个字符
strcpy(t2P); //t2存储当前前缀
if(strcmp(C““) == 0) //无码字要译,结束
{
printf(“%5d“find(P)); //输出代表当前前缀的码字
break; //退出循环编码结束
}
if(find(strcat(PC)) > -1) //有码字要译,如果P+C在词典中,则用C扩展P,进行下一步:
{ //使用strcat()时,P已变为P+C
i++;
}
else //如果P+C不在词典中,则将P+C添加到词典中,令P:=C
{
printf(“%5d“find(t2));
strcpy(PCP);
strcpy(dic[j++]PC);
strcpy(PC);
i++;
}
}
printf(“\n生成的词典为:\n“);
for(i = 0; i < j; i++) //输出词典中的内容j为词典的长度
{
printf(“%12d      “ i+1);
puts(dic[i]);
}
}
void main() //主程序
{
char str[50];
printf(“输入要编码的字符串(由abc组成):“);
gets(str);
code(str);
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件     176166  2013-05-19 08:40  LZW\Debug\lzw .exe

     文件     178000  2013-05-19 08:40  LZW\Debug\lzw .ilk

     文件       6222  2013-05-19 08:40  LZW\Debug\lzw .obj

     文件     181556  2013-05-19 08:29  LZW\Debug\lzw .pch

     文件     435200  2013-05-19 08:40  LZW\Debug\lzw .pdb

     文件      33792  2013-05-19 08:40  LZW\Debug\vc60.idb

     文件      45056  2013-05-19 08:40  LZW\Debug\vc60.pdb

     文件       1601  2013-05-19 08:40  LZW\lzw .c

     文件       3377  2013-05-19 08:36  LZW\lzw .dsp

     文件        516  2013-05-19 08:40  LZW\lzw .dsw

     文件      41984  2013-05-19 08:40  LZW\lzw .ncb

     文件      48640  2013-05-19 08:40  LZW\lzw .opt

     文件        744  2013-05-19 08:40  LZW\lzw .plg

     目录          0  2013-05-19 08:40  LZW\Debug

     目录          0  2013-05-19 08:40  LZW

----------- ---------  ---------- -----  ----

              1152854                    15


评论

共有 条评论