如何用C语言实现fat32文件系统
答案:2 悬赏:70 手机版
解决时间 2021-02-25 15:23
- 提问者网友:浮克旳回音
- 2021-02-24 22:56
如何用C语言实现fat32文件系统
最佳答案
- 五星知识达人网友:猎心人
- 2021-02-24 23:46
#include
#include //为了使用exit()
int main()
{
char ch;
FILE* fp;
char fname[50]; //用于存放文件名
printf("输入文件名:");
scanf("%s",fname);
fp=fopen(fname,"r"); //只供读取
if(fp==NULL) //如果失败了
{
printf("错误!");
exit(1); //中止程序
}
//getc()用于在打开文件中获取一个字符
while((ch=getc(fp))!=EOF)
putchar(ch);
fclose(fp); //关闭文件
return 0;
}
注意!初学者往往会犯一个错误,即在输入文件名时不加后缀名,请注意加上!
程序示例2[2]
#include
FILE *stream, *stream2;
int main( void )
{
int numclosed;
// Open for read (will fail if file "crt_fopen.c" does not exist)
if( (stream = fopen( "crt_fopen.c", "r" )) == NULL ) // C4996
// Note: fopen is deprecated; consider using fopen_s instead
printf( "The file 'crt_fopen.c' was not opened\n" );
else
printf( "The file 'crt_fopen.c' was opened\n" );
// Open for write
if( (stream2 = fopen( "data2", "w+" )) == NULL ) // C4996
printf( "The file 'data2' was not opened\n" );
else
printf( "The file 'data2' was opened\n" );
// Close stream if it is not NULL
if( stream)
{
if ( fclose( stream ) )
{
printf( "The file 'crt_fopen.c' was not closed\n" );
}
}
// All other files are closed:
numclosed = _fcloseall( );
printf( "Number of files closed by _fcloseall: %u\n", numclosed );
}
#include
int main()
{
char ch;
FILE* fp;
char fname[50]; //用于存放文件名
printf("输入文件名:");
scanf("%s",fname);
fp=fopen(fname,"r"); //只供读取
if(fp==NULL) //如果失败了
{
printf("错误!");
exit(1); //中止程序
}
//getc()用于在打开文件中获取一个字符
while((ch=getc(fp))!=EOF)
putchar(ch);
fclose(fp); //关闭文件
return 0;
}
注意!初学者往往会犯一个错误,即在输入文件名时不加后缀名,请注意加上!
程序示例2[2]
#include
FILE *stream, *stream2;
int main( void )
{
int numclosed;
// Open for read (will fail if file "crt_fopen.c" does not exist)
if( (stream = fopen( "crt_fopen.c", "r" )) == NULL ) // C4996
// Note: fopen is deprecated; consider using fopen_s instead
printf( "The file 'crt_fopen.c' was not opened\n" );
else
printf( "The file 'crt_fopen.c' was opened\n" );
// Open for write
if( (stream2 = fopen( "data2", "w+" )) == NULL ) // C4996
printf( "The file 'data2' was not opened\n" );
else
printf( "The file 'data2' was opened\n" );
// Close stream if it is not NULL
if( stream)
{
if ( fclose( stream ) )
{
printf( "The file 'crt_fopen.c' was not closed\n" );
}
}
// All other files are closed:
numclosed = _fcloseall( );
printf( "Number of files closed by _fcloseall: %u\n", numclosed );
}
全部回答
- 1楼网友:深街酒徒
- 2021-02-25 00:54
convert将文件分配表 (fat) 和 fat32 卷转换为 ntfs 文件系统,而现有的文件和文件夹完好无损。被转换为 ntfs 文件系统的卷无法再转换回 fat 或 fat32。
语法
convert [volume] /fs:ntfs [/v] [/cvtarea:filename] [/nosecurity] [/x]
参数
volume
指定驱动器号(后跟冒号)、装入点或要转换为 nifs 的卷名。
/fs:ntfs
必需。将卷转换为 ntfs。
/v
指定详细模式,即在转换期间将显示所有的消息。
/cvtarea:filename
仅适用于高级用户。指定将主控文件表 (mft) 以及其他 ntfs 元数据文件写入相邻的现存占位符文件中。该文件必须位于要转换的文件系统的根目录下。如果使用 /cvtarea 参数,可以使转换后的文件系统具有较少的碎片。为了得到最佳结果,该文件的大小最好为 1 kb 与文件系统中文件和目录数量的乘积,但是,该转换工具也接受任意大小的文件。
要点
在运行 convert 之前,首先必须使用 fsutil file createnew 命令创建占位符文件。convert 并不创建此文件。convert 使用 ntfs 元数据覆盖此文件。完成转换后,会释放此文件中所有未被使用的空间。有关 fsutil file 命令的详细信息,请参阅“相关主题”。
/nosecurity
对于转换后的文件和目录的安全性设置,将其指定为每个人都可访问。
/x
如果需要,使用该参数可在转换之前将该卷卸载。对该卷任何打开的句柄不再有效。
注释
如果 convert 无法锁定驱动器(例如,驱动器是系统卷或当前驱动器),则它会在下次重新启动计算机时转换该驱动器。如果您不能立即重新启动计算机以完成转换,则请安排一个重新启动计算机的时间,并为转换过程留出所需要的时间。
对于从 fat 或 fat32 转换为 ntfs 的卷,由于目前正在使用磁盘,将会在与最初以 ntfs 格式化的卷的不同位置创建 mft,这样卷的性能可能不如最初以 ntfs 格式化的卷的性能那么好。为取得最佳的性能,请考虑重新创建这些卷并以 ntfs 文件系统进行格式化。
从 fat 转换为 ntfs 的卷中的文件完好无损,但与最初以 ntfs 格式化的卷相比,卷可能损失了某些性能优点。例如,mft 在转换后的卷上可能会变成碎片。此外,在转换后的启动卷上,convert 将应用在 windows 安装过程中应用的同一默认安全设置。
有关使用 /cvtarea 参数的详细信息,请参阅 microsoft 资源工具包网站上的“file systems”
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯