如题,比如文件为123.txt,文件名为123,扩展名为txt,就这样就行,谢谢
并且扩展名不需要那个"."
CString CPrintImage::GetFileTitleFromFileName(CString FileName, BOOL Ext)
{
int Where;
Where = FileName.ReverseFind('\\');
if (Where == -1)
Where = FileName.ReverseFind('/');
CString FileTitle = FileName.Right(FileName.GetLength() - 1 - Where);
if (!Ext)
{
int Which = FileTitle.ReverseFind('.');
if (Which != -1)
FileTitle = FileTitle.Left(Which);
}
return FileTitle;
}
调用方法:
CString a,b,c;
a="c:\\kele8\\shootman2\\vision\\123.exe";
b=this->GetFileTitleFromFileName(a,TRUE);
c=this->GetFileTitleFromFileName(a,FALSE);
AfxMessageBox(b); 弹出123.exe
AfxMessageBox(c); 弹出123
可以参考以下代码:
/**********************************************************************
\brief 分离文件名称
\details 给任一文件名称(诸如abc.txt),把其文件名和扩展名分离
\param[in] pcFile:输入文件名(abc.txt)
\param[out] pcFileName:保存文件名(如abc)
\param[out] pcFileExtension:保存文件扩展名(如txt)
\retval TRUE:成功;FALSE:失败
**********************************************************************/
BOOL separateFileName(const char* pcFile, char* pcFileName, char* pcFileExtension)
{
char* pcTemp = NULL;
char cFile[MAX_PATH] = {'\0'};
if ((NULL != pcFile) &&
(NULL != pcFileName) &&
(NULL != pcFileExtension))
{
strcpy(cFile, pcFile);
//查找文件名与扩展名分隔符'.'
pcTemp = strrchr(cFile, '.');
if (NULL == pcTemp)
{
return(FALSE);
}
//获取扩展名
strcpy(pcFileExtension, pcTemp+1);
//获取文件名
memset(pcTemp, 0, strlen(pcTemp));
strcpy(pcFileName, cFile);
return(TRUE);
}
return(FALSE);
}
那就将字符串根据“.”前后拆分开,前半部分是文件名,后半部分是扩展名。【厚积薄发_1988】 的代码都写的辣么清楚了。不清楚你还在纠结什么。
int in=0;
char buffer[100];
char *put[10];
strcpy(buffer,123.txt);
char *buf = buffer;
//printf("buf=%s\n",buf);
while((put[in]=strtok(buf,"."))!=NULL)
{
in++;
buf=NULL;
}
这样就直接 存入了 put 数组中 这样可以吧
那个 strcpy( buffer,"123.txt");