c - 在标识符后拆分 C 字符串

标签 c parsing strtok

快速提问:我想在最后一个“/”处拆分字符串文字(文件路径)。

所以,从这个:"/folder/new/new2/new3" 结果是:"/folder/new/new2"

所以基本上,我总是希望结果是提供的绝对路径后面的一个目录。

我一直在使用 strtok 类似于此的方法来获取最后一个目录,但我不知道获取倒数第二个 目录的简单方法。 :

    char *last
    char *tok = strtok(dirPath, "/");
    while (tok != NULL)
    {
         last=tok;
         tok = strtok(NULL, "/");
    }

最佳答案

引用 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”。

关于c - 在标识符后拆分 C 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27413790/

相关文章:

python - Pandas ;将 MM :SS, 小数列转换为秒数

android - GSON 解析 Array in array in array

c - C 中的字符串解析... strtok() 并没有完全完成它

c - 使用 fgets() 和 strtok() 以逗号分隔符读取文件

c - 使用 'extern' 在 C 中创建数组

c - 这两行有什么区别?

c - malloc() 和堆内存

c - 8051 Controller 端口位读/写

android - 如何从 Parse DataBrowser 检索 ParseObject

c - strtok() 将一些字符附加到我的字符串