首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从strrchr()或strchr()中提取剩余子字符串?

如何从strrchr()或strchr()中提取剩余子字符串?
EN

Stack Overflow用户
提问于 2018-05-06 03:18:04
回答 2查看 702关注 0票数 2

假设我有以下字符串,它看起来像文件路径:

代码语言:javascript
复制
 char *filepath = "this/is/my/path/to/file.jpg";

我可以使用strrchr()提取file.jpg,如下所示:

代码语言:javascript
复制
 char *filename =  strrchr(filepath, '/') + 1;

现在,我需要提取并存储字符串this/is/my/path/to的其余部分。我如何以最有效的方式做到这一点?请注意,我希望避免使用strtok()regex或大型迭代循环。

如果:

我可以将同样的子字符串提取技术应用于strchr(),其中我已经使用strchr(filepath, '/')提取了子字符串this,现在我需要提取子字符串is/my/path/to/file.jpg的其余部分。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-06 03:39:09

将所有内容复制到文件名,然后追加一个'\0'

代码语言:javascript
复制
int   pathLen = filename - filepath;
char *path = (char *) malloc(pathLen + 1);
memcpy(path, filepath, pathLen);
path[pathLen] = '\0';

...

free(path);
票数 2
EN

Stack Overflow用户

发布于 2018-05-06 04:24:14

如果您的字符串位于可写内存中(即,不是字符串文本),则可以这样做。

代码语言:javascript
复制
char *p =  strrchr(filepath, '/');
*p = '\0';
char *filename = p + 1;

这将为您提供指向" this /is/my/path/to“和指向"file.jpg”的文件名。没有任何拷贝。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50195953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档