要求用到搜索字符串结尾的惯用法
请问这样对吗
bool test_extension(const char *file_name,const char *extension)//file_name指向文件名,//extension指向扩展名
{
int i;
while(*file_name++){
if(*file_name=='.'){
file_name++;//file_name指向‘.’后一位的元素
break;
}
while(*file_name){
*file_name=toupper(*file_name);
file_name++;
}
while(*extension){
*extension=toupper(*extension);
extension++;
}
i=strcmp(file_name,extension);
if(i==0);
return true;
else
return false;
}
文件名里面有多个点呢
错误一:const 为常量,只读,你后面不能对它赋值;
错误二;toupper()返回int型,你所调用的两处会出现段错误;
错误三:if(i==0); 此处多了一个分号。
修改这几个问题你的程序就OK了!
错误二;toupper()返回int型,你所调用的两处会出现段错误;
错误三:if(i==0); 此处多了一个分号。
我想你这样做是会报错的,首先你要明白const在你这个函数里的意思是指针指向的是常量,那么你后面的toupper函数就是非法的;其次windows系统
支持文件名中间嵌入"."号,所以建议你从最后一个字符开始读取读到点号为止