/* 목적지 경로에 들어가고 재기한 파일을 저장하기 위하여 이름을 신청하십시오 */
gotoxy(2,24);
cprintf("파일을 재기하기 위하여 경로와 파일 이름에 들어가십시오: ");
fflush(stdin);
gets(Filename_with_path);
fp=fopen(Filename_with_path,"wb");
/* 과실이 착오 알림말 전시 발생하고 경로와 파일 이름을 다시 입력하는 것을 얻는 경우에는*/
if(fp==NULL)
{
gotoxy(5,25);
cprintf("파일을 열기에 있는 과실");
getch();
clear_the_line(24);
gotoxy(0,25);
cprintf(" ");
integrate(size,cylinder,head,sector); /* 목적지에 다시 들어가십시오*/
}
/*모두가 순조로운 경우에, 통합하고 쓰십시오 */
gotoxy(50,23);
cprintf("통합........");
left= size%512;
sec = size/512;
sec++;
while(sec>0)
{
dinfo.drive = 0x00; /* A를 위한 드라이브 수: */
dinfo.head = head; /* 디스크 맨 위 수 */
dinfo.track = cylinder; /* 대위 수 */
dinfo.sector= sector; /* 분야 수 */
dinfo.nsectors=1; /* 분야 조사 */
dinfo.buffer = buf; /* 자료 버퍼 */
result = _bios_disk(_DISK_READ, &dinfo);
/* 아무 분야나 읽고 있는 동안 만약에 과실이 있으면 */
if( (result & 0xff00) != 0)
{
gotoxy(5,25);
cprintf("판독 오류 실린더 %u, Head %u, Sector %u",
cylinder, head, sector);
}
else
{
if(sec==1)
{
for(i=0;i<left;i++)
fputc(buf[i],fp); /* 파일에 통합 정보를 쓰십시오 */
}
else
{
fwrite(buf,512,1,fp);
}
|