//报告文件的类型 //fname:文件名 //返回值:0XFF,表示无法识别的文件类型编号. // 其他,高四位表示所属大类,低四位表示所属小类. u8 f_typetell(u8 *fname) { u8 tbuf[5]; u8 *attr='\0';//后缀名 u8 i=0,j; while(i<250) { i++; if(*fname=='\0')break;//偏移到了最后了. fname++; } if(i==250)return 0XFF;//错误的字符串. for(i=0;i<5;i++)//得到后缀名 { fname--; if(*fname=='.') { fname++; attr=fname; break; } } strcpy((char *)tbuf,(const char*)attr);//copy for(i=0;i<4;i++)tbuf[i]=char_upper(tbuf[i]);//全部变为大写 for(i=0;i<FILE_MAX_TYPE_NUM;i++) //大类对比 { for(j=0;j<FILE_MAX_SUBT_NUM;j++)//子类对比 { if(*FILE_TYPE_TBL[i][j]==0)break;//此组已经没有可对比的成员了. if(strcmp((const char *)FILE_TYPE_TBL[i][j],(const char *)tbuf)==0)//找到了 { return (i<<4)|j; } } } return 0XFF;//没找到 }
u8 f_typetell(u8 *fname) { u8 tbuf[5]; u8 *attr='\0'; u8 i=0,j; while(i<250) { i++; if(*fname=='\0')break; fname++; } if(i==250)return 0XFF; for(i=0;i<5;i++) { fname--; if(*fname=='.') { fname++; attr=fname; break; } } strcpy((char *)tbuf,(const char*)attr); for(i=0;i<4;i++)tbuf[i]=char_upper(tbuf[i]); for(i=0;i<6;i++) { for(j=0;j<13;j++) { if(*FILE_TYPE_TBL[i][j]==0)break; if(strcmp((const char *)FILE_TYPE_TBL[i][j],(const char *)tbuf)==0) { return (i<<4)|j; } } } return 0XFF; }