谁能用大白话给我讲解下这段代码

voidEncoding(){cout<<"下面对目录下文件tobetran.txt中的字符进行编码"<<endl;FILE*tobetran,*codefile;if(... void Encoding()
{
cout<<"下面对目录下文件tobetran.txt中的字符进行编码"<<endl;

FILE *tobetran,*codefile;

if((tobetran=fopen("tobetran.txt","rb"))==NULL)
{
cout<<"不能打开文件"<<endl;
}
if((codefile=fopen("codefile.txt","wb"))==NULL)
{
cout<<"不能打开文件"<<endl;
}
char *tran;
i=99;
tran=(char*)malloc(100*sizeof(char));
while(i==99)
{
if(fgets(tran,100,tobetran)==NULL)
{
cout<<"不能打开文件"<<endl;
break;
}
for(i=0;*(tran+i)!='\0';i++)
{
for(j=0;j<=n;j++)
{
if(*(z+j-1)==*(tran+i))
{
fputs(HC[j],codefile);
if(j>n)
{
cout<<"字符错误,无法编码!"<<endl;
break;
}
}
}
}
}
cout<<"编码工作完成"<<endl<<"编码写入目录下的codefile.txt中"<<endl<<endl;
fclose(tobetran);
fclose(codefile);
free(tran);
}
这是哈夫曼编码器的一段代码,老师要我讲解,可我一点不会,求解释。
展开
 我来答
廉秋翠Q9
2014-12-25 · TA获得超过284个赞
知道小有建树答主
回答量:228
采纳率:0%
帮助的人:137万
展开全部
void Encoding()
{
        cout<<"下面对目录下文件tobetran.txt中的字符进行编码"<<endl;
 //提示信息
        FILE *tobetran,*codefile;
 //定义了两个文件指针
        if((tobetran=fopen("tobetran.txt","rb"))==NULL) //调用打开文件函数,打开方式为二进制读取,若不成功,函数会返回NULL,如果返回NULL,说明打开失败,下一行给出提示
        {
                cout<<"不能打开文件"<<endl;
        }
        if((codefile=fopen("codefile.txt","wb"))==NULL)//同上,只是这里打开方式为二进制写入
        {
                cout<<"不能打开文件"<<endl;
        }
        char *tran; //定义了一个字符串指针
        i=99;
        tran=(char*)malloc(100*sizeof(char)); //为字符串指针分配字符串空间,指针指向字符串首地址
        while(i==99)
        {
                if(fgets(tran,100,tobetran)==NULL) //调用fgets从tobetran指向的文件中读取一行,如果失败,返回NULL,如果返回NULL说明读取失败,下面给出提示信息,并结束循环。
                {
                        cout<<"不能打开文件"<<endl;
                        break;
                }
                for(i=0;*(tran+i)!='\0';i++)  //挨个读取tran字符串中的字符,知道读到字符串结尾标志'\0'
                {
                        for(j=0;j<=n;j++)  //j为地址增量
                        {
                                if(*(z+j-1)==*(tran+i))  //将读取到的tran字符串中的某个字符与z中的字符挨个比较,如果符合,接下一行
                                {
                                  fputs(HC[j],codefile);//则往codefile中写入这个字符对应的编码
                                  if(j>n) //如果在z所指向的字符串中查找了n个还没有匹配到,说明z中不存在tran+i这个字符,提示字符错误,无法编码,循环结束。
                                  {
                                   cout<<"字符错误,无法编码!"<<endl;
                                   break;
                                  }
                                }
                        }
                }
        }
        cout<<"编码工作完成"<<endl<<"编码写入目录下的codefile.txt中"<<endl<<endl;
        fclose(tobetran);  //关闭文件,下同
        fclose(codefile);
        free(tran); //释放tran所指的字符串空间
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式