假设我有以下字符串,它看起来像文件路径:
char *filepath = "this/is/my/path/to/file.jpg";我可以使用strrchr()提取file.jpg,如下所示:
char *filename = strrchr(filepath, '/') + 1;现在,我需要提取并存储字符串this/is/my/path/to的其余部分。我如何以最有效的方式做到这一点?请注意,我希望避免使用strtok()或regex或大型迭代循环。
如果:
我可以将同样的子字符串提取技术应用于strchr(),其中我已经使用strchr(filepath, '/')提取了子字符串this,现在我需要提取子字符串is/my/path/to/file.jpg的其余部分。
发布于 2018-05-06 03:39:09
将所有内容复制到文件名,然后追加一个'\0':
int pathLen = filename - filepath;
char *path = (char *) malloc(pathLen + 1);
memcpy(path, filepath, pathLen);
path[pathLen] = '\0';
...
free(path);发布于 2018-05-06 04:24:14
如果您的字符串位于可写内存中(即,不是字符串文本),则可以这样做。
char *p = strrchr(filepath, '/');
*p = '\0';
char *filename = p + 1;这将为您提供指向" this /is/my/path/to“和指向"file.jpg”的文件名。没有任何拷贝。
https://stackoverflow.com/questions/50195953
复制相似问题