從Matlab文件中讀取mxArray類型變量-部分代碼分析
這是我做的筆記,看到這個代碼時覺得處理有點妙,做筆記記錄之。
部分源代碼:
。。。。
int main(int argc,char** argv)
{
char name[_FILE_NAME_LEN];
int num=0;
int nFlag1,nFlag2;
printf("請輸入要讀取的文件名稱(*.mat):");
scanf("%s",name);
while ((name[num++] != ‘\0‘) && (num<=_FILE_NAME_LEN-1)) ; //註意後面是分號,當時我一直以為跟下面一句是連起來組成的一個循環,其實不是。
num=num-1; //下面的代碼是文件名的處理。
if (num>_FILE_NEME_LEN-5) //為什麽是減5 呢,後面代碼可以知,這是為了為加上後綴留下空間。
{
printf("輸入的文件名太長!\n");
return 0;
}
nFlag1=strcmp(name+num-4,".MAT"); //該如何理解呢?根據後面的判斷,可以知前面的要大於後面的,假設成立,然後逆推。
//name是數組名,是指向name[0]的指針,所以是數組的表示知識,
//所以這個應該是處理用戶輸入的文件名中是否加入後綴的判斷處理。
nFlag2=strcmp(name+num-4,".mat");
if(nFlag1&& nFlag2)
{
name[num]=‘.‘;
name[name+1]=‘M‘;
name[name+2]=‘A‘;
name[name+3]=‘T‘;
name[name+4]=‘\0‘;
}
analyze_matfile(name); //自定義的目標函數
getchar();
retuen 0;
}
從Matlab文件中讀取mxArray類型變量-部分代碼分析