📄 savepart.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 + -