f_unlink调用就卡死

在使用fatfs文件管理系统的时候,遇到了调用f_unlink程序就卡死的情况,代码是获取当前目录然后获取对应的文件名,如果直接对文件名进行进行删除,则会出现程序卡死,需要在名称末端增加 \0 字符,放置内存溢出

因为我的应用场景是所有名称程度一致,所以可以通过只修改对应字符串内容来实现修改对应的文件名称

char save_file_name[10][5];	  // 保存的文件缓冲
uint8_t save_file_name_count = 0; // 保存的文件数量

	char filename_temp[] = "12345.dat";
	// 读取目前的文件列表
	res_sd = f_opendir(&dir, "0:"); // 打开文件目录
	if (res_sd != FR_OK)
		return res_sd;

	// 循环读出当前目录下的文件
	for (;;)
	{
		res_sd = f_readdir(&dir, &fno); // 读取文件名
		if (res_sd != FR_OK)
			return res_sd;

		if (fno.fname[0] == 0) // 读完所有文件结束就跳出循环
			break;

		if (fno.fattrib & AM_ARC) // 只对文件类型进行检查
		{
			strcpy(save_file_name[save_file_name_count++], fno.fname); // 存储数据至文件缓冲
		}
	}
	f_closedir(&dir); // 关闭文件目录
	
	memcpy(filename_temp, save_file_name[0], sizeof(save_file_name[0]));
	if (Fatfs_delete(filename_temp) != FR_OK)
		return FR_INVALID_NAME;

static char filepath[50];
// 删除对应的文件  删除文件之前,需要关闭该文件
uint8_t Fatfs_delete(char *path)
{
	memset(filepath, 0, sizeof(filepath));
	strcat(filepath, "0:");			// 更新驱动号
	strcat((char *)filepath, path); // 更新文件名
	return f_unlink((const TCHAR *)filepath);
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值