如何用C写一个虚拟的磁盘和文件系统①

如何用C写一个虚拟的磁盘和文件系统①,第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) //如果失败了

{

部分代码:

#include "stdio.h"

#include "conio.h"

struct filesys_superblk

{ /*文件系统的分区信息,存放在0#物理块中*/

unsigned long fs_size/*整个分区的总磁盘物理块数 */

unsigned long fs_freesize/*分区的所有空闲磁盘物理块数 */

unsigned int fs_blocksize/*文件系统的物理块大小(字节)*/

unsigned int fs_fat_start/*FAT的起始磁盘物理块号 */

unsigned int fs_fat_size/*FAT占用的磁盘物理块数*/

unsigned int fs_dir_start/*根目录的起始磁盘物理块号*/

unsigned int fs_dir_size/*根目录占用的磁盘物理块数*/

unsigned int fs_data_start/*数据区起始磁盘物理块号*/

unsigned long fs_data_size/*数据区的磁盘物理块数*/

}

struct FILE_FCB

{ /*文件控制块结构 */

char f_name[16]/*文件名(16B)*/

short f_mode/*文件属性,-1表示未用 0表示目录 1表示文件*/

unsigned int f_asize/*文件分配的大小(物理块数)*/

unsigned long f_rize/*文件占用的实际大小(字节)*/

unsigned long f_addr/*文件分配的第一个物理块的块号*/

unsigned int f_ctime/*文件创建时间*/

unsigned int f_mtime/*文件修改时间*/

}

你的代码很重要的2点:

1、输入字符串不需要地址符&,读取的时候也不需要,输入和读取其实概念一样,不需要规定长度

2、输入的字符长度在结构体有规定,要是输入多了虽然没编译错误,但就会出现数据溢出,你再次读入或者查看数据情况时就会出现乱码,或者数据的位置不对,SCANF不能摄入空格,换行等,一般想存储字符串都用gets()

ps:

其实文件的读取跟它是怎样存储有关,是2进制还是ACCII要分清楚,在打开文件的时候就有区别

你如何打开文件来存储的,就要以同样方式打开来读取

要是还有困难还在,就把您的全部代码发上来,我可以为您修改并解释


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存