C++读取磁盘MBR的问题?怎么解决?这个for循环写对了吗?

C++读取磁盘MBR的问题?怎么解决?这个for循环写对了吗?,第1张

1、把散敏悄所有的头文件双引号改成<>,这是标准库头文件。

2、错误提示是)没有配对或者没有语句结束符。自己根据行号提示进行修改。冲渣

3、你那个代码,应该 是直接复制的别人的拿者。 自己最好是按源码方式 进行复制 。

DeviceIoControl读写游培改分区表

biosdisk 读写磁盘扇区

外+C语言里的f函数。

#include<process.h>

#include<ctype.h>

#include<bios.h>

#include<stdio.h>

void init_mbr(),help(),restor_mbr(),backup_mbr(),display_mbr()

main()

{

char ch

for()

{

printf("-")

ch=getchar()

switch(tolower(ch))

{

case'd':display_mbr()

break

case'b':backup_mbr()

break

case'r':restor_mbr()

break

case'?':help()

break

case'i':init_mbr()

break

case'q':exit(0)

}

getchar()

}

}

void display_mbr()

{

int result

register int i

unsigned char buffer[512]

result=biosdisk(4,0,0,0,1,1,buffer)

result&=0x02

if(result)

{

biosdisk(2,0,0,0,1,1,buffer)

for(i=0i<512i++)

{

if(!(i%8))

{

printf(" ")

if(!(i%16))

{

printf("\n")

printf("%04x: ",i)

}

}

printf("%02x ",buffer)

}

}

else

printf("mbr not ready!")

}

void backup_mbr()

{

int result

FILE *fp

unsigned char buffer[512]

biosdisk(2,0,0,0,1,1,buffer)

if((fp=fopen("d:\\backup.dpt","wb"))==NULL)

{

printf("cannot creat file\n")

exit(1)

}

else

{

result=fwrite(buffer,sizeof(buffer),1,fp)

(result)?(printf("中裤mbr backup finished"))printf("mbr backup failed"))

}

fclose(fp)

}

void restor_mbr()

{

int result

FILE *fp

unsigned char buffer[512]

if((fp=fopen("d:\\backup.dpt","rb"))==NULL)

{

printf("waring! not find the backup file!\n")

exit(1)

}

else

{

fread(buffer,sizeof(buffer),1,fp)

result=biosdisk(3,0,0,0,1,1,buffer)

(result)?(printf("mbr restore finished"))printf("mbr restore fail"))

}

fclose(fp)

}

void help()

{

printf("Commands may be abbrebiated. Supported commands are:\n\n")

printf("d display the mbr datas\n")

printf("b backup the mbr to d:\backup.dpt\n")

printf("神判r restore the mbr from d:\backup.dpt\n")

printf("i init the mbr to unuse\n")

printf("q exit the program\n")

printf("? display the help list\n")

}

void init_mbr()

{

int result

unsigned char buffer[512]

FILE *fp

int i

for(i=0i<512i++)

{

buffer=0

}

result=biosdisk(3,0,0,0,1,1,buffer)

(result)?(printf("mbr init finished"))printf("mbr init&nb


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12398864.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存