我正在进行一些测试以创建文件系统,我创建了一个虚拟磁盘,格式为20个512字节的块,每个文件或目录将存储在其中一个块中。虚拟磁盘的总大小为10.2 Kb,但是当我尝试编辑20个块中的一个时,虚拟磁盘的总大小会减少。
F.E。如果我正在编辑块5,我的虚拟磁盘的大小将变为3.1Kb(512 * 6)。似乎当我使用fwrite()函数来编写一个块时,虚拟磁盘被格式化为块im编辑位置的大小。
感谢。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void Format_VDisk (int numberOfRecords,FILE *aStream);
void WriteBlock (int i, char *blockAddr,FILE *aStream);
void ReadBlock (int i, char *blockAddr,FILE *aStream);
#define BLOCK_SIZE 512
int main()
{
FILE *aStream;
char command[10];
printf("Command:");
scanf("%s",command);
if(strcmp(command,"init")==0)
{
aStream=fopen("VDisk","w+b");
Format_VDisk(20,aStream);
fclose(aStream);
}
else if(strcmp(command,"write")==0)
{
aStream=fopen("VDisk","w+b");
char block[BLOCK_SIZE];
memset (block, '1', BLOCK_SIZE);
WriteBlock(5,block,aStream);
fclose(aStream);
}
}
void Format_VDisk (int numberOfRecords,FILE *aStream)
{
char block[BLOCK_SIZE];
memset (block, '0', BLOCK_SIZE);
WriteBlock (numberOfRecords - 1, block,aStream);
}
void WriteBlock (int i, char *blockAddr,FILE *aStream)
{
if(aStream!=NULL)
{
fseek (aStream, i * BLOCK_SIZE, SEEK_SET);
fwrite (blockAddr,BLOCK_SIZE, 1, aStream);
}
}