您的位置:首页 > 运维架构 > Linux

LinuxC下对windows磁盘进行分区-动态生成MBR表

2017-03-30 14:26 477 查看
(本篇文章禁止任何人转载)

题目要求:

动态生成MBR分区表

1. 题目具体要求描述

1) 在硬盘上先划分一个C分区(主分区),安装win7/10 mbr系统, 硬盘要预留空闲空间; --- 前置部署条件

2) 程序可以显示当前硬盘上的已划分空间和剩余空间;  --- 题目要求功能之一

3) 程序可以根据用户输入(可以是程序内部指定,也可以通过命令行输入)参数(分区大小,分区类型)在剩余空闲空间中划分分区,

划分的分区以逻辑分区的形式挂载到分区表上;      

--- 题目要求功能之二

2. 基于 linux 平台开发( 提供开发环境 && 基本的磁盘读写接口 && 简单的程序框架 );  

首先这个题目是实习的公司给的第一个题目,因为是刚开始接触linuxC下的编程,又是第一次写扇区下存储的信息,底核真的不好写啊,写了大概有一个星期把,现在已经能熟练访问到逻辑扇区下的数据了.

具体的东西以后再写,先把代码贴上来,代码是在gedit里写的,可能很乱,我写的时候也是十分随心所欲,想怎么命名就怎么命名,以后开发的时候要对版本控制,代码也要认真写_(:з」∠)_

基本上完成了以下功能:

1.查看windows硬盘(以下简称硬盘)的总空间,已用空间,剩余空间(未分配空间).

2.查看硬盘的扩展分区的总空间,已用空间和剩余空间

3.显示扩展分区中各个逻辑硬盘的信息.

4.对磁盘进行分区(指定大小)

5.删除磁盘分区

在虚拟机中我们有两个硬盘,第一个安装win7,第二个安装ubantu 12.0

win7磁盘名:/dev/sda

我们在ubantu下进行编程运行之后,可以在win7的硬盘管理上看到相应的磁盘操作:

#ifndef _GNU_SOURCE
#DEFINE _GNU_SOURCE /*for O_DIRECT*/
#endif

#define _LARGEFILE64_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <linux/fs.h>
#include <sys/ioctl.h>

int fd;
int sizes;
int line, j;
char buf[1000];
char buffe[1000];
char log_buf[512];
u_int64_t logic_sec_n=0;
u_int64_t total_all=0;
u_int64_t logic_sec=0;
u_int64_t logic_all=0;
u_int64_t logic_use=0;
u_int64_t logic_not_use=0;
u_int64_t logic_last=0;

int read_table(char dirves[])
{
u_int64_t allsize=0;

fd=open(dirves, O_RDONLY);
if(fd<0)
{
printf("open %s error\n",dirves);
}
ioctl(fd, BLKSSZGET, &sizes);
ioctl(fd, BLKGETSIZE, &allsize);
total_all=allsize;
if(lseek(fd, 446, SEEK_SET)==-1)//从MBR的第一块扇区中读取
{
printf("lseek table error\n");
return -1;
}
read(fd, buf, sizes);

printf("\nMBR分区表如下:\n");
for(line=0; line<4; line++)
{
for(j=0; j<16; j++)
{
printf("%02x ",(unsigned char)buf[line*16+j]);
}
printf("\n");
}
close(fd);

return 0;
}

int check(char dirves[])
{
int count=0;
char buf_ex[512]={0};
u_int64_t total_size=0;
u_int64_t total_not_use=0;
u_int64_t total_use=0;
if(read_table(dirves)==-1)
return -1;
for(int i=0; i<4; i++)
{
total_size=total_size+(u_int64_t)buf[(i+1)*16-1]*0x1000000+(u_int64_t)buf[(i+1)*16-2]*0x10000+(u_int64_t)buf[(i+1)*16-3]*0x100+(u_int64_t)buf[(i+1)*16-4];
}
total_not_use=total_all-total_size;

//=========================打印
printf("\n每块扇区所占字节数:sector size=%d\n", sizes);
printf("当前硬盘总扇区数:total_all=0x%lx =%ld\n",total_all,total_all);
total_all=total_all<<9;
printf("总空间:total_all=%ldByte =%ldKB = %ldMB =%ldGB\n",total_all,total_all>>10,total_all>>20,total_all>>30);

printf("\n已占用空间扇区数:total_size=0x%lx =%ld\n",total_size,total_size);
total_use=total_size<<9;
printf("已占用空间:total_use=%ldByte =%ldKB = %ldMB =%ldGB\n",total_use,total_use>>10,total_use>>20,total_use>>30);

printf("\n剩余空间总扇区数:total_all=0x%lx =%ld\n",total_not_use,total_not_use);
total_not_use=total_not_use<<9;
printf("剩余空间:total_not_use=%ldByte =%ldKB = %ldMB =%ldGB\n\n\n",total_not_use,total_not_use>>10,total_not_use>>20,total_not_use>>30);
//=========================扩展分区的开始逻辑磁盘
for(int i=0; i<4; i++)
{
if(buf[16*i+4]!=0x0f)
continue;
else{
count=i;
break;
}
}
count=count*16;
printf("扩展分区:\n");
for(int k=0; k<16; k++)
{
buf_ex[k]=buf[count++];
printf("%02x ", (unsigned char)buf_ex[k]);
}
printf("\n");
logic_sec=(unsigned char)buf_ex[11]*(u_int64_t)0x1000000+(unsigned char)buf_ex[10]*(u_int64_t)0x10000+(unsigned char)buf_ex[9]*(u_int64_t)0x100+(unsigned char)buf_ex[8];

logic_all=(unsigned char)buf_ex[15]*(u_int64_t)0x1000000+(unsigned char)buf_ex[14]*(u_int64_t)0x10000+(unsigned char)buf_ex[13]*(u_int64_t)0x100+(unsigned char)buf_ex[12];
printf("扩展分区开始的逻辑扇区:0x%lx\n",logic_sec);
//=========================第一个扇区取出
fd=open(dirves,O_RDONLY|O_LARGEFILE);
if(fd<0)
{
printf("open the logic_sec error\n");
}
if(lseek64(fd, logic_sec*512+446, SEEK_SET)==-1)
{
printf("lseek logic_sec*512+446 error\n");
}

read(fd, log_buf, sizes);

if(log_buf[15]==0&&log_buf[14]==0&&log_buf[13]==0&&log_buf[12]==0)
{
printf("\n扩展分区内没有逻辑扇区\n\n");
logic_sec_n=0;
logic_last=logic_sec_n;
printf("扩展分区总空间:%ldsector= %ldB= %ldKB= %ldMB= %ldGB\n",logic_all, logic_all*512, logic_all*512>>10, logic_all*512>>20, logic_all*512>>30);

return -1;
}
else
{
printf("%lx\n",logic_sec);
printf("第一个逻辑扇区为:\n");

for(line=0; line<5; line++)
{
for(j=0; j<16; j++)
{
printf("%02x ",(unsigned char)log_buf[line*16+j]);
}
printf("\n");
}
//printf("bbb%lx\n",logic_sec);
//logic_sec_n=logic_sec+(unsigned char)log_buf[11]*(u_int64_t)0x1000000+(unsigned char)log_buf[10]*(u_int64_t)0x10000+(unsigned char)log_buf[9]*(u_int64_t)0x100+(unsigned char)log_buf[8]+(unsigned char)log_buf[15]*(u_int64_t)0x1000000+(unsigned char)log_buf[14]*(u_int64_t)0x10000+(unsigned char)log_buf[13]*(u_int64_t)0x100+(unsigned char)log_buf[12];
logic_sec_n=logic_sec+(unsigned char)log_buf[27]*(u_int64_t)0x1000000+(unsigned char)log_buf[26]*(u_int64_t)0x10000+(unsigned char)log_buf[25]*(u_int64_t)0x100+(unsigned char)log_buf[24];
if(log_buf[31]==0&&log_buf[30]==0&&log_buf[29]==0&&log_buf[28]==0)
{

logic_last=logic_sec;
logic_use=(unsigned char)log_buf[15]*(u_int64_t)0x1000000+(unsigned char)log_buf[14]*(u_int64_t)0x10000+(unsigned char)log_buf[13]*(u_int64_t)0x100+(unsigned char)log_buf[12]+(unsigned char)log_buf[11]*(u_int64_t)0x1000000+(unsigned char)log_buf[10]*(u_int64_t)0x10000+(unsigned char)log_buf[9]*(u_int64_t)0x100+(unsigned char)log_buf[8];
printf("\n扩展分区总空间:%ldsector\n %ldB= %ldKB= %ldMB= %ldGB\n",logic_all, logic_all*512, logic_all*512>>10, logic_all*512>>20, logic_all*512>>30);
//logic_use=logic_sec_n-logic_sec;
printf("总逻辑硬盘的扇区数:%ld\n总逻辑硬盘大小:%ldB= %ldKB= %ldMB= %ldGB\n\n\n",logic_use,logic_use*512,logic_use*512>>10,logic_use*512>>20,logic_use*512>>30);
logic_not_use=logic_all-logic_use;
printf("剩余可划分空间的扇区数:%ld\n可划分空间大小:%ldB= %ldKB= %ldMB= %ldGB\n\n\n",logic_not_use,logic_not_use*512,logic_not_use*512>>10,logic_not_use*512>>20,logic_not_use*512>>30);

return -1;
}
else
{
for(int i=0; i<15; i++)
{
if(lseek64(fd, logic_sec_n*512+446, SEEK_SET)==-1)
{
printf("seek %di error\n",i+2);
return -1;
}
logic_last=logic_sec_n;
read(fd, log_buf, sizes);
printf("%lx\n",logic_sec_n);
printf("第%d块逻辑磁盘的信息是:\n",i+2);
for(line=0; line<5; line++)
{
for(j=0; j<16; j++)
{
printf("%02x ",(unsigned char)log_buf[line*16+j]);
}
printf("\n");
}

//logic_sec_n=logic_sec_n+(unsigned char)log_buf[15]*(u_int64_t)0x1000000+(unsigned char)log_buf[14]*(u_int64_t)0x10000+(unsigned char)log_buf[13]*(u_int64_t)0x100+(unsigned char)log_buf[12]+(unsigned char)log_buf[11]*(u_int64_t)0x1000000+(unsigned char)log_buf[10]*(u_int64_t)0x10000+(unsigned char)log_buf[9]*(u_int64_t)0x100+(unsigned char)log_buf[8];

if(log_buf[31]==0&&log_buf[30]==0&&log_buf[29]==0&&log_buf[28]==0)
break;
logic_sec_n=logic_sec+(unsigned char)log_buf[27]*(u_int64_t)0x1000000+(unsigned char)log_buf[26]*(u_int64_t)0x10000+(unsigned char)log_buf[25]*(u_int64_t)0x100+(unsigned char)log_buf[24];

}
}
printf("扩展分区总空间:%ldsector= %ldB= %ldKB= %ldMB= %ldGB\n",logic_all, logic_all*512, logic_all*512>>10, logic_all*512>>20, logic_all*512>>30);
logic_use=logic_sec_n-logic_sec;
//printf("%lx %lx",logic_sec_n,logic_sec);
//logic_last=logic_sec_n;
printf("总逻辑硬盘的扇区数:%ld\n总逻辑硬盘大小:%ldB= %ldKB= %ldMB= %ldGB\n\n\n",logic_use,logic_use*512,logic_use*512>>10,logic_use*512>>20,logic_use*512>>30);
logic_not_use=logic_all-logic_use;
printf("剩余可划分空间的扇区数:%ld\n可划分空间大小:%ldB= %ldKB= %ldMB= %ldGB\n\n\n",logic_not_use,logic_not_use*512,logic_not_use*512>>10,logic_not_use*512>>20,logic_not_use*512>>30);
}

return 0;

}

int add(char dirves[])
{
int type;
char add_type;
char add_buf[1000]={0};
char ceshi[1000]={0};
u_int64_t logic_size=0;
u_int64_t EX_sector=0;
u_int64_t add_logic=0;
//check(dirves);
printf("输入要划分的分区类型:\n");
printf("1.FAT16\n2.FAT32\n3.NTFS\n请选择:");
scanf("%d",&type);
switch(type)
{
case(1):{add_type=0x06; break;}//fat16
case(2):{add_type=0x0B; break;}//fat32
case(3):{add_type=0x07; break;}//ntfs
}
//printf("%02x \n",(unsigned int)add_type);
printf("输入要分区的大小(单位:MB,不得超过%ldMB大小):",logic_not_use*512>>20);
scanf("%ld",&EX_sector);

EX_sector=(EX_sector<<20)/512;
printf("要划分的大小为:%lx\n %ldB= %ldKB= %ldMB= %ldGB\n",EX_sector, EX_sector*512,EX_sector*512>>10,EX_sector*512>>20,EX_sector*512>>30);

fd=open(dirves, O_RDWR|O_LARGEFILE);
if(fd<0)
{
printf("open dirves error \n");
}
if(lseek64(fd, logic_sec*512+446, SEEK_SET)==-1)
{
printf("lseek logic_sec error\n");
}
read(fd, log_buf, sizes);
/*if(log_buf[31]==0&&log_buf[30]==0&&log_buf[29]==0&&log_buf[28]==0)
logic_last=logic_sec;
*/if(log_buf[15]==0&&log_buf[14]==0&&log_buf[13]==0&&log_buf[12]==0)
{
add_buf[64]=0x55;add_buf[65]=0xaa;
add_buf[15]=EX_sector/(u_int64_t)0x1000000;
add_buf[14]=EX_sector%(u_int64_t)0x1000000/(u_int64_t)0x10000;
add_buf[13]=EX_sector%(u_int64_t)0x1000000%(u_int64_t)0x10000/(u_int64_t)0x100;
add_buf[12]=EX_sector%(u_int64_t)0x1000000%(u_int64_t)0x10000%(u_int64_t)0x100;
add_buf[11]=0x00;add_buf[10]=0x00;add_buf[9]=0x8;add_buf[8]=0x00;
add_buf[7]=0xff;add_buf[6]=0xff;add_buf[5]=0xfe;
add_buf[4]=add_type;
add_buf[3]=0xff;add_buf[2]=0xff;add_buf[1]=0xfe;
add_buf[0]=0x00;

fd=open(dirves, O_RDWR|O_LARGEFILE);
if(fd<0)
{
printf("open dirves error \n");
}
if(lseek64(fd, logic_sec*512+446, SEEK_SET)==-1)
{
printf("lseek logic_sec error\n");
}
if(write(fd, add_buf, sizes)==-1)
{
printf("write logic_sec error\n");
return -1;
}
}
else
{

//printf("aaaaaaaaaaaaaaaaaaaaaa%lx\n",logic_last);

if(lseek64(fd, logic_last*512+446, SEEK_SET)==-1)
{
printf("lseek logic_sec error\n");
}
read(fd, log_buf, sizes);
for(line=0; line<5; line++)
{
for(j=0; j<16; j++)
{
printf("%02x ",(unsigned char)log_buf[line*16+j]);
}
printf("\n");
}
printf("\n");

logic_size=(unsigned char)log_buf[15]*(u_int64_t)0x1000000+(unsigned char)log_buf[14]*(u_int64_t)0x10000+(unsigned char)log_buf[13]*(u_int64_t)0x100+(unsigned char)log_buf[12]+(unsigned char)log_buf[11]*(u_int64_t)0x1000000+(unsigned char)log_buf[10]*(u_int64_t)0x10000+(unsigned char)log_buf[9]*(u_int64_t)0x100+(unsigned char)log_buf[8];

add_logic=logic_last+logic_size-logic_sec;
EX_sector=EX_sector+0x800;

log_buf[31]=EX_sector/(u_int64_t)0x1000000;
log_buf[30]=EX_sector%(u_int64_t)0x1000000/(u_int64_t)0x10000;
log_buf[29]=EX_sector%(u_int64_t)0x1000000%(u_int64_t)0x10000/(u_int64_t)0x100;
log_buf[28]=EX_sector%(u_int64_t)0x1000000%(u_int64_t)0x10000%(u_int64_t)0x100;

log_buf[27]=add_logic/(u_int64_t)0x1000000;
log_buf[26]=add_logic%(u_int64_t)0x1000000/(u_int64_t)0x10000;
log_buf[25]=add_logic%(u_int64_t)0x1000000%(u_int64_t)0x10000/(u_int64_t)0x100;
log_buf[24]=add_logic%(u_int64_t)0x1000000%(u_int64_t)0x10000%(u_int64_t)0x100;

log_buf[23]=0xff;log_buf[22]=0xff;log_buf[21]=0xfe;
log_buf[19]=0xff;log_buf[18]=0xff;log_buf[17]=0xfe;
log_buf[20]=0x5;

EX_sector=EX_sector-0x800;
add_buf[64]=0x55;add_buf[65]=0xaa;
add_buf[15]=EX_sector/(u_int64_t)0x1000000;
add_buf[14]=EX_sector%(u_int64_t)0x1000000/(u_int64_t)0x10000;
add_buf[13]=EX_sector%(u_int64_t)0x1000000%(u_int64_t)0x10000/(u_int64_t)0x100;
add_buf[12]=EX_sector%(u_int64_t)0x1000000%(u_int64_t)0x10000%(u_int64_t)0x100;

add_buf[11]=0x0;add_buf[10]=0x0;add_buf[9]=0x8;add_buf[8]=0x0;
add_buf[3]=log_buf[23];add_buf[2]=log_buf[22];add_buf[1]=log_buf[21];
add_buf[7]=log_buf[23];add_buf[6]=log_buf[22];add_buf[5]=log_buf[21];
add_buf[4]=add_type;
add_buf[0]=0x0;
//===========写入
fd=open(dirves, O_RDWR|O_LARGEFILE);
if(fd<0)
{
printf("open dirves error \n");
}
if(lseek64(fd, logic_last*512+446, SEEK_SET)==-1)
{
printf("lseek logic_sec error\n");
}
printf("logic_last:%lx\n",logic_last);
/*read(fd, ceshi,sizes);
for(line=0; line<4; line++)
{
for(j=0; j<16; j++)
{
printf("%02x ",(unsigned char)ceshi[line*16+j]);
}
printf("\n");
}*/

if(write(fd, log_buf, sizes)==-1)
{
printf("write i error\n");
return -1;
}
//===========第二张表
if(lseek64(fd, (logic_last+logic_size)*512+446, SEEK_SET)==-1)
{
printf("lseek logic_sec error\n");
}
/*printf("logic_last+logic_size:%lx\nadd_buf\n",logic_last+logic_size);
for(line=0; line<4; line++)
{
for(j=0; j<16; j++)
{
printf("%02x ",(unsigned char)add_buf[line*16+j]);
}
printf("\n");
*///}
//read(fd, ceshi, sizes);
if(write(fd, add_buf, sizes)==-1)
{
printf("write i error\n");
return -1;

}
/*printf("logic_last+logic_size:%lx\nceshi end\n",logic_last+logic_size);
for(line=0; line<4; line++)
{
for(j=0; j<16; j++)
{
printf("%02x ",(unsigned char)ceshi[line*16+j]);
}
printf("\n");
*/// }
logic_last=logic_last+logic_size;

}
close(fd);

}

int del_table(char dirves[])
{
int tag;
char del[1000];
char del_buf[1000];
u_int64_t del_temp=0;
system("clear");
check(dirves);
printf("要删除的分区:\n");
scanf("%d",&tag);

fd=open(dirves,O_RDWR|O_LARGEFILE);
if(fd<0)
{
printf("open the logic_sec error\n");
}
if(lseek64(fd, logic_sec*512+446, SEEK_SET)==-1)
{
printf("lseek logic_sec*512+446 error\n");
}

read(fd, log_buf, sizes);

if(log_buf[15]==0&&log_buf[14]==0&&log_buf[13]==0&&log_buf[12]==0)
{
printf("\n扩展分区内没有逻辑扇区\n\n");
logic_sec_n=0;
logic_last=logic_sec_n;

return -1;
}
else
{
if(log_buf[31]==0&&log_buf[30]==0&&log_buf[29]==0&&log_buf[28]==0)
{
if(tag!=1)
{printf("输入错误,当前只有一个逻辑分区\n");return -1;}
else//一个分区的情况
{
memset(del,0,66);
if(lseek64(fd, logic_sec*512+446, SEEK_SET)==-1)
{
printf("lseek logic_sec*512+446 error\n");
}
if(write(fd, del, sizes)==-1)
{
printf("write 1 error\n");
return -1;
}
}
}
else
{
logic_sec_n=logic_sec+(unsigned char)log_buf[27]*(u_int64_t)0x1000000+(unsigned char)log_buf[26]*(u_int64_t)0x10000+(unsigned char)log_buf[25]*(u_int64_t)0x100+(unsigned char)log_buf[24];
if(lseek64(fd, logic_sec_n*512+446, SEEK_SET)==-1)
{
printf("lseek logic_sec*512+446 error\n");
}

read(fd, del_buf, sizes);
if(del_buf[31]==0&&del_buf[30]==0&&del_buf[29]==0&&del_buf[28]==0)//两个分区的情况
{

if(lseek64(fd, logic_sec*512+446, SEEK_SET)==-1)
{
printf("lseek logic_sec*512+446 error\n");
}
if(tag==2)
{
log_buf[16]=0;log_buf[17]=0;log_buf[18]=0;log_buf[19]=0;log_buf[20]=0;log_buf[21]=0;
log_buf[22]=0;log_buf[23]=0;log_buf[24]=0;log_buf[25]=0;log_buf[26]=0;log_buf[27]=0;
log_buf[28]=0;log_buf[29]=0;log_buf[30]=0;log_buf[31]=0;
if(write(fd, log_buf, sizes)==-1)
{
printf("write 1 error\n");
return -1;
}

}
if(tag==1)
{
del_buf[11]=log_buf[27];del_buf[10]=log_buf[26];
del_buf[9]=log_buf[25];del_buf[8]=log_buf[24];

if(write(fd, del_buf, sizes)==-1)
{
printf("write 1 error\n");
return -1;
}
}
}
else//三个及其以上的分区
{

if(tag==1)
{
if(lseek64(fd, logic_sec*512+446, SEEK_SET)==-1)
{
printf("lseek logic_sec*512+446 error\n");
}

del_buf[11]=log_buf[27];del_buf[10]=log_buf[26];
del_buf[9]=log_buf[25];del_buf[8]=log_buf[24];

if(write(fd, del_buf, sizes)==-1)
{
printf("write 2 error\n");
return -1;
}
}
for(int i=2; i<=23; i++)
{
logic_sec_n=logic_sec+(unsigned char)log_buf[27]*(u_int64_t)0x1000000+(unsigned char)log_buf[26]*(u_int64_t)0x10000+(unsigned char)log_buf[25]*(u_int64_t)0x100+(unsigned char)log_buf[24];

if(lseek64(fd, logic_sec_n*512+446, SEEK_SET)==-1)
{
printf("lseek logic_sec*512+446 error\n");
}

read(fd, log_buf, sizes);

if(i==tag-1)
{
del_temp=logic_sec_n;
}
if(tag==2)
{
del_temp=logic_sec;
}
if(i==tag)
{
if(lseek64(fd, del_temp*512+446, SEEK_SET)==-1)
{
printf("lseek logic_sec*512+446 error\n");
}

read(fd, log_buf, sizes);
if(lseek64(fd, logic_sec_n*512+446, SEEK_SET)==-1)
{
printf("lseek logic_sec*512+446 error\n");
}

log_buf[15]=del_buf[15];log_buf[20]=del_buf[20];log_buf[24]=del_buf[24];log_buf[28]=del_buf[28];
log_buf[16]=del_buf[16];log_buf[21]=del_buf[21];log_buf[25]=del_buf[25];log_buf[29]=del_buf[29];
log_buf[17]=del_buf[17];log_buf[22]=del_buf[22];log_buf[26]=del_buf[26];log_buf[30]=del_buf[30];
log_buf[18]=del_buf[18];log_buf[23]=del_buf[23];log_buf[27]=del_buf[27];log_buf[31]=del_buf[31];
log_buf[19]=del_buf[19];

if(lseek64(fd, del_temp*512+446, SEEK_SET)==-1)
{
printf("lseek logic_sec*512+446 error\n");
}
if(write(fd, log_buf, sizes)==-1)
{
printf("write 1 error\n");
return -1;
}

}
}

}
}

}
close(fd);

}

int main(int argc, char * argv[])
{
int c;
char dirves[128];
system("clear");
printf("\n//========================开始=========================================\n\n输入磁盘名称type in drvice:");
scanf("%s",dirves);
//char ok[128]="/dev/sda";

//dirves=(char [])"/dev/sda";
system("clear");
printf("输入选项:\n 1.查看硬盘及分区信息\n 2.增加逻辑分区\n 3.删除逻辑分区\n输入要操作的选项:");
scanf("%d", &c);
switch(c)
{
case(1):
{
check(dirves);
break;
}

case(2):{check(dirves);add(dirves);break;}
case(3):{del_table(dirves);break;}

default:

}

return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: