我有像“folder1/file1.txt”或“foldername1/hello.txt”字符串,我需要采用字符串标识文件夹名称与斜杠(/)包括
(例如:从“folder1/file1.txt”我需要“folder1 /”)。
文件夹名称并非全部具有相同的长度。 我该怎么做C?感谢从字符串像子文件夹1/file1.txt的子串C
2
A
回答
3
首先,找到斜杠用,和strchr位置:
char * f = "folder/foo.txt"; // or whatever
char * pos = strchr(f, '/');
然后复制到一个合适的地方:
char path[1000]; // or whatever
strncpy(path, f, (pos - f) + 1);
path[(pos-f)+1] = 0; // null terminate
你真的应该写一个函数来做到这一点,你需要决定如果strchr()返回NULL,表示斜杠不在那里。
3
找到最后的'/'字符,前进一个字符,然后截断字符串。假设字符串是可以修改的,并且指向char *filename;
:
char *p;
p = strrchr(filename, '/');
if (p)
{
p[1] = '\0';
}
/* filename now points to just the path */
1
你可以使用的strstr()函数:
char *s = "folder1/file1.txt";
char folder[100];
char *p = strstr(s, "/");
if (0 != p)
{
int len = p - s + 1;
strncpy(folder, s, len);
folder[len] = '\0';
puts(folder);
}
1
如果您在POSIX机器上工作,你可以看一下dirname()
函数,它可以或多或少地做你想要的。有一些特殊情况是它处理那些朴素的代码没有的 - 但要小心标准中的黄鼠狼字(关于修改输入字符串,可能会返回一个指向输入字符串的指针,或者可能是一个指向可以修改的静态内存的指针后来)。它(dirname())不保留你说你需要的尾部斜线。但是,这很少是一个实际问题;在目录名和文件之间添加斜线并不难。
相关问题
- 1. 阅读.txt的子字符串,为AutoCompleteSource返回子字符串
- 2. 从字符串获取子串C
- 3. C#字符串操作。获取文件名子字符串
- 4. 从字符串获取子字符串__
- 5. 的Perl:字符串中子字符串或子字符串中
- 6. 从C中的字符串开头删除子字符串
- 7. 在文件中查找字符串的子串C
- 8. 从字符串c提取子字符串#
- 9. 从xml字符串获取子字符串objective-c
- 10. 从开始到子字符串c修剪字符串#
- 11. 从字符串C得到游戏得分(子字符串)#
- 12. 如何从C#中的文件路径获取子字符串?
- 13. 子串一个字符C++
- 14. 快速从字符串的子串仅
- 15. C++从char中删除子字符串
- 16. 字符串中的子串
- 17. 与字符串的子串()
- 18. 从字符串值文件夹中获取字符串数组?
- 19. 迅速 - 子从字符串
- 20. c - 从中文件中读取句子成字符串
- 21. RewriteCond查询字符串的子域和文件夹
- 22. 根据条件从字符串中提取子字符串
- 23. 通过搜索字符串获取子字符串文本来获取字符串的子字符串?
- 24. 字符串中的子字符串
- 25. 绑定字符串的子字符串
- 26. 检查字符串的子字符串
- 27. 字符串的返回子字符串
- 28. PHP - 字符串的子字符串
- 29. PHP从字符串获取子串
- 30. 从字符串创建子串数组
你migth希望从字符串的末尾使用strrchr() – 2010-01-29 11:30:56
找到斜线取决于他是否想要路径中的第一个目录或整个shebang - 大多数操作系统有一个功能来做后者,所以我假设前者。 – 2010-01-29 11:35:53