我有像「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. 子文件夾內結合子文件夾的名稱,使一個字符串
- 4. C#字符串操作。獲取文件名子字符串
- 5. 字符串修剪/子字符串C#
- 6. 從文件中提取子字符串
- 7. TXT文件字符串
- 8. 從字符串獲取子字符串__
- 9. yii從url中移除子文件夾字符串
- 10. 如何從C#中的字符串中獲取字符串的子字符串?
- 11. 的Perl:字符串中子字符串或子字符串中
- 12. 從C中的字符串開頭刪除子字符串
- 13. 如何從C++中的字符串中提取子字符串?
- 14. 得到C字符串子串在C++
- 15. PHP來檢測字符串的子文件夾和解析字符串
- 16. 如何從txt文件夾中剪切多個字符串#
- 17. 在C++中刪除韓文字符串中的子字符串
- 18. 在文件中查找字符串的子串C
- 19. 如何從C#中的文件路徑獲取子字符串?
- 20. 從字符串c提取子字符串#
- 21. 從開始到子字符串c修剪字符串#
- 22. 如何從一個字符串使用C#子字符串?
- 23. 從大字符串C#中提取子字符串?
- 24. 從字符串C得到遊戲得分(子字符串)#
- 25. 從xml字符串獲取子字符串objective-c
- 26. C#字符串到句子
- 27. C++從char中刪除子字符串
- 28. 快速從字符串的子串僅
- 29. C++子串/字符串操作
- 30. 如何將字符串從txt文件轉換爲java中的不同子字符串
你migth希望從字符串的末尾使用strrchr() – 2010-01-29 11:30:56
找到斜線取決於他是否想要路徑中的第一個目錄或整個shebang - 大多數操作系統有一個功能來做後者,所以我假設前者。 – 2010-01-29 11:35:53