如何用C语言实现fat32文件系统

如何用C语言实现fat32文件系统,第1张

#include <stdio.h>

#include <stdlib.h>//为了使用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 <stdio.h>

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 deprecatedconsider 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 )

}

---------先了解FAT/FAT16/FAT32--------- 在推出FAT32文件系统之前,通常PC机使用的文件系统是FAT16。像基于MS-DOS,Win 95等系统都采用了FAT16文件系统。在Win 9X下,FAT16支持的分区最大为2GB。我们知道计算机将信息保存在硬盘上称为“簇”的区域内。使用的簇越小,保存信息的效率就越高。在FAT16的情况下,分区越大簇就相应的要增大,存储效率就越低,势必造成存储空间的浪费。并且随着计算机硬件和应用的不断提高,FAT16文件系统已不能很好地适应系统的要求。在这种情况下,推出了增强的文件系统FAT32。同FAT16相比,FAT32主要具有以下特点: 1. 同FAT16相比FAT32最大的优点是可以支持的磁盘大小达到2TB(2047GB),但是不能支持小于512MB的分区。基于FAT32的Win 2000可以支持分区最大为32GB;而基于 FAT16的Win 2000支持的分区最大为4GB。 2. 由于采用了更小的簇,FAT32文件系统可以更有效率地保存信息。如两个分区大小都为2GB,一个分区采用了FAT16文件系统,另一个分区采用了FAT32文件系统。采用FAT16的分区的簇大小为32KB,而FAT32分区的簇只有4KB的大小。这样FAT32就比FAT16的存储效率要高很多,通常情况下可以提高15%。 3. FAT32文件系统可以重新定位根目录和使用FAT的备份副本。另外FAT32分区的启动记录被包含在一个含有关键数据的结构中,减少了计算机系统崩溃的可能性。 ◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎ NTFS 和 FAT32 分区的区别到底是啥呢??? http://www.inbase.org/home/printpage.asp?ArticleID=583 当然了NTFS 和 FAT32 都是目前比较流行的磁盘分区格式,由FAT到FAT16----FAT32---NTFS,NTFS功能强一些。 1. NTFS 支持文件加密和分别管理功能(也就是著名的EFS加密格式),可为用户提供更高层次的安全保证。 2. NTFS 具有更好的磁盘压缩性能,可进一步满足小硬盘用户的需要(读取会慢一些)。 3. NTFS 最大支持高达 2TB (1TB=1024GB)的大硬盘,而且它的性能不会随着磁盘容量的增大而降低。 由此可见,NTFS 格式具有许多独特的优点 不过,呵呵,它也有一个缺点,那就是该磁盘文件格式不能被除它自己之外的其他 *** 作系统所识别(NT 4.0也不例外),这就对数据交流造成了一定的影响,也就不支持DOS *** 作系统了,不过还是值得支持。 所以呀....只使用 Windows 2000 的用户应首选使用 NTFS 格式,要是同时使用 Windows 2000 和其他 *** 作系统,则应谨慎从事。最好将磁盘划分为多个不同的磁盘分区,将 Windows 2000 安装到其中的一个磁盘分区并选择使用 NTFS 格式;将其他 *** 作系统安装到另外的磁盘分区中并使用 FAT 或 FAT32 格式。

文件头哪几个代码代表文件大小?你的描述有些问题,我都回答一下吧

dbr中20-23H位置是描述分区的大小

文件目录项中32个字节描述一个文件,最后4个字节是大小


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12095606.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存