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

📄 savepart.c

📁 推荐刚刚开始学C语言的同志们看下
💻 C
字号:
#include <stdio.h>
#include <bios.h>
#include <fcntl.h>
#include <sys\types.h>
#include <sys\stat.h>

void helpmsg(void);          /*自定义函数原型说明,用来显示提示信息*/

int main(int argc,char * argv[])
{
  int result;
  char buffer[512];
  FILE *fp;
  if (argc == 1) helpmsg();
  if (* argv[1] == 'b' || *argv[1] == 'B')		/*保存分区表功能*/
  {
    result = biosdisk(2,0x80,0,0,0,1,buffer);   /*调用biosdisk,将错误类型返回给result,内容存在buffer中*/
	if (!result){								/*如果成功读取分区表*/
		printf("读硬盘分区表成功\n");
		if (( fp == fopen("c:part.doc","wb+"))==NULL)     /*将结果写到C:\part.doc文件中*/
		{
			fprintf(stderr,"不能创建文件:c:part.doc \n"); /*如果写文件失败*/
			exit(1);
		}
		fwrite(buffer,1,512,fp);
		fclose(fp);
		printf("硬盘分区表保存成功\n");
		return 0;
	}
	else {										/*如果读取失败*/
		fprintf(stderr,"读硬盘分区表失败");
		exit(1);
	}
  }
  if ( * argv[1] == 'c' || * argv[1] == 'C')	/*恢复分区表功能,顺序相反,操作与上面类似*/
  {
	  if ((fp == fopen("c:part.doc","rb+"))==NULL)
	  {
		  fprintf(stderr,"文件打开失败");
		  exit(1);
	  }
	  fread (buffer,1,512,fp);
	  result = biosdisk(3,0x80,0,0,1,1,buffer);
	  if (! result){
		  printf("硬盘分区表恢复成功");
		  fclose(fp);
		  return 0;
	  }
	  else{
		  fprintf(stderr,"硬盘分区表恢复失败");
		  fclose(fp);
		  exit(1);
	  }
  }
  return 0;
}

void helpmsg(void)
{
	puts("程序使用的正确格式为:SAVEPART[B]或SAVEPART[C]");
	puts("参数:  B---保存硬盘分区表到C盘part.doc文件");
	puts("参数:  C---从C盘part.doc文件恢复硬盘分区表");
	exit(0);
}

⌨️ 快捷键说明

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