file.c

来自「学习有关Linux文件管理程序如何组织的知识」· C语言 代码 · 共 117 行

C
117
字号
#include <stdio.h>#include <unistd.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#define DEVNAME "/dev/fd0H1440"#define BYTES_PER_SECTOR 512void ReadBootSector(unsigned char *buf){  int i;  printf("--------------- Boot -----------------\n");  for (i = 0; i < 32; i++)    printf("%2d ",i);  for (i = 0; i < 256; i++) {    if (i % 32 == 0)       printf("\n");    printf("%2x ",buf[i]);  }  printf("\n\n");}void ReadCluster(unsigned char *buf,int addr){  int i;  printf("---------------Data %x-----------------\n",addr);  for (i = 0; i < 32; i++)    printf("%2d ",i);  for (i = 0; i < 256; i++) {    if (i % 32 == 0)       printf("\n");    printf("%2x ",buf[i]);  }  printf("\n\n");}void ReadFAT(unsigned char *buf){  int i;  printf("----------------FAT-----------------\n");  for (i = 0; i < 32; i++)    printf("%2d ",i);  for (i = 0; i < 256; i++) {    if (i % 32 == 0)       printf("\n");    printf("%2x ",buf[i]);  }  printf("\n\n");}void ReadDirectory(unsigned char *buf){  int i;  printf("--------------ROOTDIR---------------\n");  for (i = 0; i < 32; i++)    printf("%2d ",i);  for (i = 0; i < 256; i++) {    if (i % 32 == 0)       printf("\n");    printf("%2x ",buf[i]);  }  printf("\n\n");}int main(){  int fd,count;  int ret;  unsigned char buf[256];	 /* Attention to type  */	  if ((fd = open(DEVNAME,O_RDWR)) < 0)    perror("open failed");	  if ((count = read(fd,buf,256)) < 0)    perror("read failed");  ReadBootSector(buf);  if ((ret = lseek(fd,0x2600,SEEK_SET)) < 0)    perror("seek failed\n");  if ((count = read(fd,buf,256)) < 0)    perror("read failed\n");  ReadDirectory(buf);  if ((ret = lseek(fd,0x200,SEEK_SET)) < 0)    perror("seek failed\n");  if ((count = read(fd,buf,256)) < 0)    perror("read failed\n");  ReadFAT(buf);  if ((ret = lseek(fd,0x4200,SEEK_SET)) < 0)    perror("seek failed\n");  if ((count = read(fd,buf,256)) < 0)    perror("read failed\n");  ReadCluster(buf,0x4200);  close(fd);  return 0;}

⌨️ 快捷键说明

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