利用第二张FAT表挽救软盘数据

Author: Date: 1996-08-23

        本文提供的程序,用Turbo C 2.0编写,于DOS 6.22、UCDOS 3.1下,在386DX/40机上通过。按照程序的提示,可方便地完成这一工作。
        #include <dos.h>
        main()
        {
        int i,j,dh,ch;
        a:printf("Select drive/选定驱动器:(0->A/1->B)\n");
        scanf("%d",&ch);
        if (1<ch||ch<0)/*判断输入的驱动器选择是否正确*/
        goto a;
        printf("Select disk/选定磁盘类型:");
        printf("(36->360K/72->720K/12->1.2M/14->1.44M)\n");
        scanf("%d",&dh);/*按选定的软盘类型进行处理*/
        switch(dh)
        {
        case 36:/*处理360K软盘*/
        for (i=1;i<3;i++)
        {
        j=i+2
        absread(ch,1,j,0);
        abswrite(ch,1,i,0);
        }
        break;
        case 72:/*处理720K软盘*/
        for(i=1;i<4;i++)
        {
        j=i+3
        absread(ch,1,j,0);
        abswrite(ch,1,i,0);
        }
        break;
        case 12:/*处理1.2M软盘*/
        for(i=1;i<8,i++)
        {
        j=i+7;
        absread(ch,1,j,0);
        abswrite(ch,1,i,0);
        }
        break;
        case 14:/*处理1.44M软盘*/
        for(i=1;i<10;i++)
        {
        j=i+9;
        absread(ch,1,j,0);
        abswrite(ch,1,i,0);
        }
        break;
        }
        printf("OK!");
        }