⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 decode.c

📁 Huffman和迷宫问题Huffman和迷宫问题Huffman和迷宫问题Huffman和迷宫问题
💻 C
字号:

void decode(void)
{
    HuffmanTree HT;
    FILE *fp,*fp1;
    int n=0,i,c,p,m;
    char ch,filename[30],filename1[30],temp,temp1;

    clrscr();
    printf("----------------------------------DECODING----------------------------\n\n");
    printf("Please enter the input path inlucding the Codefile's name:(e.x:  c:\\Codefile )\n\n\n");
    gets(filename);
    clrscr();
    printf("----------------------------------DECODING----------------------------\n\n");
    printf("Please enter the output path inlucding the Codefile's name:(e.x:  c:\\Codefile )\n\n\n");
    gets(filename1);

    if((fp=fopen(filename,"rb"))==NULL)
    {
        printf("File does not exist. Press any key..\n");
        getch();
    }
    if((fp1=fopen(filename1,"wb"))==NULL)
    {
        printf("File does not exist. Press any key..\n");
        getch();
    }
    if(fp){

    n=fgetc(fp);

    HT=(HuffmanTree)malloc((2*n-1)*sizeof(HTNode));
    for(i=0;i<2*n-1;i++)
        fread(&HT[i],sizeof(HTNode),1,fp);


    p=ftell(fp);

    clrscr();
    printf("----------------------------------DECODING----------------------------\n\n");

    fseek(fp,p,0);

    printf("\n\nThe original passage has already been saved to ");
    puts(filename1);




    ch=fgetc(fp);

    m=7;
    while(!feof(fp))
    {
        c=2*n-1;
        while(HT[c-1].lchild!=0)
        {
            temp=1;
            temp=temp<<m;
            temp=temp&ch;
            temp=temp>>m;
            temp1=1;
            temp=temp&temp1;

            if(temp==0)
                c=HT[c-1].lchild;
            else if(temp==1)
                c=HT[c-1].rchild;
            else
                break;
            m--;
            if(m<0)
            {
                ch=fgetc(fp);
                m=7;
            }
        }
        fputc(HT[c-1].cha.cha,fp1);


    }

    fclose(fp);
    fclose(fp1);
    printf("\n\n\n\n\n                Press any key");
    getch();
    }
}





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -