C++获取文件的文件名和扩展名

如题,比如文件为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");

参考 http://blog.csdn.net/hong__fang/article/details/41448777