这是我做的笔记,看到这个代码时觉得处理有点妙,做笔记记录之。
部分源代码:
。。。。
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;
}