⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.c

📁 HFAT32 v1.0是我依据FAT标准,按照自己的理解写出来的一个FAT文件系统 特性: 1.HFAT32 v1.0 是一个小型的嵌入式FAT文件系统,可以方便地在nand flash,R
💻 C
字号:
//
//
//
#include <stdio.h>
#include "string.h"
#include "hfileapi.h"

#define S_WORD unsigned short
#define S_BYTE unsigned char

void  hai_InitMemHeap(void *pMem, unsigned long size);


int listdir(void)
{
	int err;
	long handle;
	struct finddata fd;

	handle = hai_findfirst("", &fd);
	if (!handle)
	{
		printf("not find!\n");
		return -1;
	}

	do {
		if (fd.attrib&0x10)
			printf("d     ");
		else
			printf("f     ");
		printf(fd.name); printf("\n");
		err = hai_findnext(handle, &fd);
	}while (!err);
	
	hai_findclose(handle);
	
	return 0;
}

char *cmdset[] =
{
	"exit",
	"format",
	"chdir",
	"mkdir",
	"rmdir",
	"flush",
	"create",
	"open",
	"read",
	"write",
	"close",
	"dir",
	"rm",
	""
};

S_BYTE heap[1024*20];

int main(int argc, char *argv[])
{
	int loop = 1;
	int i, err;
	long size;
	char cwd[260];
	char cmd[260], arg[260];
	HFILE hfile = 0;
	HFILE hfile2 = 0;

	hai_InitMemHeap(heap, 1024*20);
	hai_InitFileSys();

	while (loop)
	{
		hai_getcwd(cwd, 260);
		printf(cwd);printf("\\>:");
		scanf("%s", cmd);
		for (i = 0; i < sizeof(cmdset)/sizeof(cmdset[0]); i++)
		{
			if (!strcmp(cmd, cmdset[i]))
				break;
		}

		switch (i)
		{
		case 0:
			loop = 0;
			break;
		case 1:
			scanf("%s", arg);
			err = hai_format(arg, 0);
			break;
		case 2:
			scanf("%s", arg);
			err = hai_chdir(arg);
			break;
		case 3:
			scanf("%s", arg);
			err = hai_mkdir(arg);
			break;
		case 4:
			scanf("%s", arg);
			err = hai_rmdir(arg);
			break;
		case 5:
			err = hai_flushall();
			break;
		case 6:
			scanf("%s", arg);
			hfile2 = hai_fopen(arg, "w");
			if (hfile2)
				err = hai_fclose(hfile2);
			else
				err = -1;
			break;
		case 7:
			scanf("%s", arg);
			if (hfile)
				hai_fclose(hfile);
			hfile = hai_fopen(arg, "r+");
			err = hfile?0:-1;
			break;
		case 8:
			err = hai_fseek(hfile, 0, SEEK_END);
			if (!err)
			{
				size = hai_ftell(hfile);
				memset(arg, 0x00, sizeof(arg));
				hai_fseek(hfile, 0, SEEK_SET);
				if (size > 250)
					size = 250;
				if (hai_fread(arg, size, 1, hfile) == 1)
				{
					err = 0;
					printf(arg);
					printf("\n");
				}
				else
					err = -1;
			}
			break;
		case 9:
			scanf("%s", arg);
			if (hai_fwrite(arg, strlen(arg), 1, hfile) == 1)
				err = 0;
			else
				err = -1;
			break;
		case 10:
			if (hfile)
			{
				err = hai_fclose(hfile);
				if (!err)
					hfile = 0;
			}
			else
				err = -1;
			break;
		case 11:
			listdir();
			err = 0;
			break;
		case 12:
			scanf("%s", arg);
			err = hai_remove(arg);
			break;
		default:
			err = -1;
			break;
		}
		if (err)
			printf("bad command or argument!\n");
		else
			printf("OK!\n");
	}
	hai_flushall();
	return 0;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -