初级会员

- 积分
- 95
- 金钱
- 95
- 注册时间
- 2013-7-18
- 在线时间
- 0 小时
|

楼主 |
发表于 2013-7-19 10:02:57
|
显示全部楼层
回复【2楼】正点原子:
---------------------------------
u32 FatTab_Prev_Cluster(unsigned long cluster)
{
u8 t;
u32 tempclust;
RSTP:
for(t=0;t<Fat_Table_Size;t++)
{
if(cluster><=(FAT_TAB.Fat_Base_Tab[t]+FAT_TAB.Fat_Base_Len[t]-1)&&cluster>=FAT_TAB.Fat_Base_Tab[t])break;
//在这个BASE内
}
if(cluster==FAT_TAB.Fat_Base_Tab[t])//是在BASE,但是是第一个
{
if(t==0)//这份FAT表 全部找完还没找到
{
if(FAT_TAB.Fat_Head_Pos>0)//不超过范围
{
FAT_TAB.Fat_Head_Pos--; //存储不同文件的表头
tempclust=FAT_TAB.Fat_Base_Head[FAT_TAB.Fat_Head_Pos];//拷贝上一个tinyFAT表的表头
}else return cluster; //无法继续向上
Copy_Fat_Table(tempclust);//COPY 上一个tinyFAT表
goto RSTP;
//return FAT_TAB.Fat_Base_Tab[Fat_Table_Size-1]+FAT_TAB.Fat_Base_Len[Fat_Table_Size-1]-1;
//返回上一个簇号
}
return FAT_TAB.Fat_Base_Tab[t-1]+FAT_TAB.Fat_Base_Len[t-1]-1;//上一个簇号
}else return --cluster; //返回上一个簇
}
当该簇为文件的表头时,也就是t=0,依次将下个文件COPY 上一个tinyFAT表,接着执行goto RSTP;但是for中的条件都不满足啊,执行完之后t=10了,再执行if就会出现问题了啊 |
|