提取路径中的文件名

// 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;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值