📄 新建 文本文档.txt
字号:
while(len<9)
{ c=bioskey(0);
if(c==ENTER)
break;
setcolor(YELLOW);
filename[len]=(char)c;
len++;
sprintf(s,"%c",c);
outtextxy(202+10*len,215,s);
}
setfillstyle(SOLID_FILL,BLACK);
bar(200,200,360,230);
if (filename[len-1] == '\n')
{
filename[len-1] = '\0';
len--;
}
free(s);
return len;
}
int creat_file()
{
int m=0;
int c;
char filename[10]={0};
char error[12]={0};
char dump[256]={0};
sprintf(error,"%s","File_n:");
outtextxy(200,200,error);
rectangle(200,210,360,230);
while(m<9)
{ c=bioskey(0);
if(c==ENTER)
break;
setcolor(YELLOW);
filename[m]=(char)c;
m++;
sprintf(error,"%c",c);
outtextxy(202+10*m,215,error);
}
setfillstyle(SOLID_FILL,BLACK);
bar(200,200,360,230);
for(m=0;m<=sign_count;m++)
{
if(strcmp(FCB[m].file_name,filename)==0&&sign_count>0)
{
sprintf(error,"%s","Cover? y/n");
outtextxy(200,200,error);
c=bioskey(0);
setfillstyle(SOLID_FILL,BLACK);
bar(200,200,420,230);
if((char)c=='y')
{
fseek(disk, (m+2)*SECTOR_SIZE, SEEK_SET);
fwrite(dump, SECTOR_SIZE, 1, disk);
FCB[m].point_sector =m+2;
FCB[m].file_size=0;
fseek(disk, m*sizeof(FCB[m]), SEEK_SET);
fwrite(&FCB[m],sizeof(FCB[m]),1,disk);
}
return 1;
}
}
if(sign_count>SECTOR_SIZE/sizeof(FCB[1]))
return 0;
sprintf(error,"%s","Owner:");
outtextxy(200,200,error);
rectangle(200,210,360,230);
m=0;
while(m<9)
{ c=bioskey(0);
if(c==ENTER)
break;
setcolor(YELLOW);
FCB[sign_count].usr_name[m]=(char)c;
m++;
sprintf(error,"%c",c);
outtextxy(202+10*m,215,error);
}
setfillstyle(SOLID_FILL,BLACK);
bar(200,200,360,230);
FCB[sign_count].property=2;
FCB[sign_count].file_size=0;
strcpy(FCB[sign_count].file_name,filename);
FCB[sign_count].point_sector =sign_count+2;
getdate(&d);
sprintf(filename,"%d.%2d.%2d",d.da_year,d.da_mon,d.da_day);
strcpy(FCB[sign_count].time,filename);
fseek(disk, sign_count*sizeof(FCB[sign_count]), SEEK_SET);
fwrite(&FCB[sign_count],sizeof(FCB[sign_count]),1,disk);
sign_count++; /*记录文件所用扇区的个数*/
fseek(disk, 1*SECTOR_SIZE, SEEK_SET);
fwrite(&sign_count,sizeof(sign_count),1,disk); /*把扇区的个数保存到磁盘第1个扇区上*/
}
int del_file()
{
int m=0;
int c;
char filename[20]={0};
char error[12]={0};
char dump[256]={0};
sprintf(error,"%s","File_n:");
outtextxy(200,200,error);
rectangle(200,210,360,230);
while(m<9)
{ c=bioskey(0);
if(c==ENTER)
break;
setcolor(YELLOW);
filename[m]=(char)c;
m++;
sprintf(error,"%c",c);
outtextxy(202+10*m,215,error);
}
setfillstyle(SOLID_FILL,BLACK);
bar(200,200,360,230);
for(m=0;m<=sign_count;m++)
{
if(strcmp(FCB[m].file_name,filename)==0&&sign_count>0)
{
sprintf(error,"%s","DEL? y/n");
outtextxy(200,200,error);
c=bioskey(0);
setfillstyle(SOLID_FILL,BLACK);
bar(200,200,420,230);
if((char)c=='y')
{
fseek(disk, (m+2)*SECTOR_SIZE, SEEK_SET);
fwrite(dump, SECTOR_SIZE, 1, disk);
for(;m<=sign_count-1;m++)
{strcpy(FCB[m].usr_name,FCB[m+1].usr_name);
strcpy(FCB[m].file_name,FCB[m+1].file_name);
FCB[m].point_sector=FCB[m+1].point_sector;
FCB[m].file_size=FCB[m+1].file_size;
strcpy(FCB[m].time,FCB[m+1].time);
FCB[m].property=FCB[m+1].property;
fseek(disk, m*sizeof(FCB[m]), SEEK_SET);
fwrite(&FCB[m],sizeof(FCB[m]),1,disk);
}
sign_count--;
fseek(disk, 1*SECTOR_SIZE, SEEK_SET);
fwrite(&sign_count,sizeof(sign_count),1,disk);
}
return 1;
}
}
if(m>sign_count)
{
sprintf(error,"%s","No found");
outtextxy(200,200,error);
getch();
setfillstyle(SOLID_FILL,BLACK);
bar(200,200,420,230);
return 0;
}
}
int add_file()
{
}
int get_file_content(char* buf)
{
int ch, count=0;
int x=0,y=0;
char s[10]={0};
setcolor(YELLOW);
sprintf(s,"%s","File_c");
outtextxy(180,70,s);
setcolor(RED);
rectangle(180,80,500,400);
setcolor(GREEN);
while ((ch = getch()) != '~')
{
buf[count] = ch;
sprintf(s,"%c",ch);
if(185+10*x>492)
{ x=0;
y++;
}
outtextxy(185+10*x,85+y*10,s);
count++;
x++;
}
setfillstyle(SOLID_FILL,BLACK);
bar(180,70,500,400);
free(s);
return count;
}
int init_disk(void)
{
char dump[SECTOR_SIZE] = {0};
int i;
disk = fopen("vdisk.dat", "r+b");
if(disk == NULL)
{
disk = fopen("vdisk.dat", "w+r");
if (disk == NULL)
return 0;
for (i=0; i<TOTAL_SECTOR; i++)
{ fseek(disk,i*SECTOR_SIZE,SEEK_SET);
fwrite(dump, SECTOR_SIZE, 1, disk);
}
}
return (int)disk;
}
void close_disk(void) /*关闭文件*/
{
fclose(disk);
}
int read_disk(int sector, void* buf)
/* 把磁盘的第sector个扇区内容读入到buf
sector从0开始编号
运行正确返回非0值,错误返回0 */
{
if (!init_disk())
return 0;
fseek(disk, sector*SECTOR_SIZE, SEEK_SET); /*SEEK代表0 将位置指针移到离文件头sector*SECTOR_SIZE个字节处*/
return fread(buf, SECTOR_SIZE, 1, disk);
}
int write_disk(int sector, void* buf)
/* 把buf中SECTOR_SIZE个字节的数据写到磁盘的第sector个扇区
sector从0开始编号
运行正确返回非0值,错误返回0 */
{
if (!init_disk())
return 0;
fseek(disk, sector*SECTOR_SIZE, SEEK_SET);
return fwrite(buf, SECTOR_SIZE, 1, disk);
}
int draw_FCB(char *usr_name,char *file_name ,int point_sector,int size,char *time,int property)
{
char s[15]={0};
setcolor(YELLOW);
sprintf(s,"%s","FCB");
outtextxy(20,70,s);
setcolor(RED);
rectangle(20,80,170,400);
line(80,80,80,400);
for(i=0;i<=4;i++)
{
line(20,134+i*54,170,134+i*54);
}
settextjustify(0,3);
setcolor(GREEN);
sprintf(s,"%s","USR_NA");
outtextxy(25,100,s);
sprintf(s,"%s",usr_name);
outtextxy(85,100,s);
sprintf(s,"%s","FIL_NA");
outtextxy(25,154,s);
sprintf(s,"%s",file_name);
outtextxy(85,154,s);
sprintf(s,"%s","SECOTR");
outtextxy(25,208,s);
sprintf(s,"%d",point_sector);
outtextxy(85,208,s);
sprintf(s,"%s","SIZE");
outtextxy(30,262,s);
sprintf(s,"%d",size);
outtextxy(85,262,s);
sprintf(s,"%s","TIME");
outtextxy(30,316,s);
sprintf(s,"%s",time);
outtextxy(85,316,s);
sprintf(s,"%s","PORERTY");
outtextxy(22,370,s);
sprintf(s,"%d",property);
outtextxy(85,370,s);
return 1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -