快速提问:我想在最后分割一个字符串文字(文件路径)“/”。
所以,从这个:"/folder/new/new2/new3"
结果如下:"/folder/new/new2"
基本上,我总是希望结果是提供的绝对路径后面的一个目录。
我一直在使用类似于此的strtok
来获取最后一个目录,但我不知道一个简单的方法来获取倒数第二个目录。 :
char *last
char *tok = strtok(dirPath, "/");
while (tok != NULL)
{
last=tok;
tok = strtok(NULL, "/");
}
答案 0 :(得分:4)
在参考user3121023的建议时,我使用了strrchr
,然后放置了一个空终结符来代替最后一次出现的“/".
char str[] = "/folder/cat/hat/mat/ran/fan";
char * pch;
pch=strrchr(str,'/');
printf ("Last occurence of '/' found at %d \n",pch-str+1);
str[pch-str] = '\0';
printf("%s",str);
这很好用,打印的结果是“/ folder / cat / hat / mat / ran”。
答案 1 :(得分:0)
// find last slash
char *position = strstr(dirPath, "/");
while (strstr(position, "/") != NULL)
{
position = strstr(position, "/");
}
// now "position" points at the last slash character
if(position) {
char *answer = malloc(position - dirPath); // difference in POINTERS
strncpy(answer, dirPath, position - dirPath);
answer[position - dirPath] = `\0`; // null-terminate the result
}
答案 2 :(得分:0)
我没有编译并运行它。只是为了好玩。
char* p = dirPath, *last = NULL;
for(; *p; p++)
{
if (*p == '/')
last = p;
}
if (last)
{
*last = 0;
puts(dirPath);
}