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

📄 chkdsk.c

📁 Many C samples. It is a good sample for students to learn C language.
💻 C
字号:
/* Check Disk */
#include <stdio.h>
#include <dos.h>

typedef unsigned char BYTE;
typedef unsigned WORD;

typedef struct tagdiskinfo {
  char signature;
  WORD skip;
  char vendor[8];
  WORD bytepersector;
  BYTE sectorpercluster;
  WORD reservedsectors;
  BYTE fatcopies;
  WORD rootentries;
  WORD totalsectors;
  BYTE media;
  WORD sectorperfat;
  WORD sectorpertrack;
  WORD heads;
  WORD hiddensectors;
  char loader [482];
} DISKINFO;

DISKINFO diskinfo;
char readbuffer[512];
char writebuffer[512];
int numbadsector;

void check(int disknum, int sector)
{
  int thu, ketqua;
  thu = 0;
  do {
    ketqua = absread(disknum, 1, sector, readbuffer);
  } while (ketqua != 0 && thu < 5);
  if (thu >= 5)
    numbadsector++;
}

void main(int argc, char *argv[])
{
  int disknum, i, x, y;

  if (argc < 2)
    printf("\nCach dung : CHKDSK <o dia>");
  else
  {
    disknum = toupper(argv[1][0]) - 'A';
    if (disknum > 1)
      printf("\nCHKDSK chi lam viec len dia mem");
    else
      if (absread(disknum, 1, 0, &diskinfo)!= 0)
        printf("Khong the doc boot record cua o %c", 'A' + disknum);
      else
      {
        printf("\n\n\nDang tien hanh kiem tra o dia %c\n", disknum+'A');
        x = wherex();
        y = wherey();
        numbadsector = 0;
        for (i=0; i<diskinfo.totalsectors; i++)
        {
          gotoxy(x, y);
          cprintf("%3.0f%%", (float)(i+1)*100/diskinfo.totalsectors);
          check(disknum, i);
        }
        if (numbadsector > 0)
          printf("Tong so bad sector = %d", numbadsector);
        printf("\nCHKDSK completed.");
      }
  }
  getch();
}

⌨️ 快捷键说明

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