// ExtractName.cpp : 定义控制台应用程序的入口点。
//
// 提取路径中的文件名 如: "C:\\ProgramData\\AMD\\KDB\\123.bmp"; 提取123
#include <stdio.h>
#include <string.h>
#include <malloc.h>
static char * fileName;
// fName 传入字符串
// ret 返回文件名
// retSize返回文件名的字节数
int retName(char * fName, char * ret, int * retSize)
{
char tempName[1024];
char * prtS = NULL;
char * prtL = NULL;
char * prtS1 = NULL;
int length = strlen(fName);
int count = 0;
int i = 0;
memcpy(tempName, fName, length);
tempName[length] = '\0';
prtS = tempName;
prtL = tempName;
prtS1 = tempName;
for(i = 0; i < length; i ++)
{
if(*prtS == '\\')
{
count ++;
}
prtS ++;
}
prtS = tempName;
prtL = tempName;
int num = 0;
if(count == 0)
{
prtS = tempName;
}else
{
while(1)
{
prtS = strstr(prtS, "\\");
num ++;
prtS ++;
if(num == count)
{
break;
}
}
}
count = 0;
for(i = 0; i < length; i ++)
{
if(*prtS1 == '.')
{
count ++;
}
prtS1 ++;
}
if(0 == count)
{
prtL = tempName;
prtL = tempName + length;
*prtL = '\0';
}
else
{
prtL = strstr(prtS, ".");
* prtL = '\0';
}
memcpy(ret, prtS, (prtL - prtS + 1));
* retSize = prtL - prtS;
return 0;
}
int main(int argc, char* argv[])
{
fileName = (char *)malloc(1024);
char * p = "C:\\ProgramData\\AMD\\KDB\\123.bmp";
int length = strlen(p);
memcpy(fileName, p, length);
fileName[length] = '\0';
char ret[100];
int retSize = 0;
retName(fileName, ret, &retSize);
printf("%s\n", fileName);
printf("%s\n", ret);
printf("%d\n", retSize);
printf("%s\n", fileName);
return 0;
}
提取路径中的文件名
最新推荐文章于 2024-07-25 16:08:16 发布