c语言简单basename程序源码

⌚Time: 2024-11-06 23:52:00

👨‍💻Author: Jack Ge

windows系统上没有basename这个小工具,就写了一个。

#include <stdio.h>
#include <string.h>
//c语言缺少的宏定义
#define bool int
#define false 0
#define true 1

char g_basename[1024] = {0};

void set_basename(char *name){
    bool hasSeparator = false;
    unsigned int separatorPos = 0;
    int i=0;
    for(i=0;i<strlen(name);i++){
        if(name[i]=='\\'||name[i]=='/'){
            separatorPos = i;
            hasSeparator = true;
        }
    }
    if(hasSeparator == true){
        strcpy(g_basename,name+separatorPos+1);
    }else{
        strcpy(g_basename,name);
    }
}

int main(int argc, char* argv[]){
    if(argc == 1){
        printf("none");
    }else{
        set_basename(argv[1]);
        printf("%s",g_basename);
    }
    return 0;
}

不带扩展名的函数



//获取文件名
void get_basename(char *fullname,char basename[]){
    bool hasSeparator = false;
    unsigned int separatorPos = 0;
    int i=0;
    for(i=0;i<strlen(fullname);i++){
        if(fullname[i]=='\\'||fullname[i]=='/'){
            separatorPos = i;
            hasSeparator = true;
        }
    }
    if(hasSeparator == true){
        strcpy(basename,fullname+separatorPos+1);
    }else{
        strcpy(basename,fullname);
    }
}
// 不带扩展名
void get_basename_no_ext(char *fullname,char basename[]){
    get_basename(fullname,basename);
    unsigned int pointpos = 0;
    bool haspoint = false;
    for(int i=0;i<strlen(basename);i++){
        if(basename[i]=='.'){
            haspoint = true;
            pointpos = i;
        }
    }
    if(haspoint){
        basename[pointpos] = '\0';
    }
}