1. 程式人生 > >從Matlab文件中讀取mxArray類型變量-部分代碼分析

從Matlab文件中讀取mxArray類型變量-部分代碼分析

strcmp tla 輸入 printf 分代 目標 char n-1 ()

這是我做的筆記,看到這個代碼時覺得處理有點妙,做筆記記錄之。

部分源代碼:

。。。。

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類型變量-部分代碼分析