C - 使用 strtok 按分隔符 "mv <from> <to>"拆分字符串 "/"

标签 c string delimiter strtok

我得到一个具有恒定格式的输入。例如:

char* str = "mv/Folder1/文件夹 2/f1/Folder1/文件夹 3"

我需要将其拆分,以便最终得到两个单独的字符串,

str1 ==/文件夹1/文件夹2/f1

str2 ==/文件夹1/文件夹3

我尝试过使用 strtok(str, "/") 但它不起作用。它忽略了其中的空格 分隔符并且仅使用“/”。

有什么想法吗?

非常感谢!

最佳答案

Here is a brief explanation of strtok.当您传递“/”时,您是在告诉 strtok 在“/”或“”上拆分。事实上,strtok 可能不容易满足您的需求,因为它不会使用一对字符来分割,而是使用每个字符来分割。然后,您必须提供逻辑来重新组装组合在一起但其中有空格的拆分项目。您可以通过查找“/”中背靠背分割字符导致的空标记来实现此目的。这会告诉您您正处于新路径字符串的开头。然而,该解决方案不会非常强大,因为有人可能会在 mv 之后放入双空格并破坏它。大多数工具要求您使用外部分隔符(例如引号)或使用“\”作为文件名和路径一部分的空格。

关于C - 使用 strtok 按分隔符 "mv <from> <to>"拆分字符串 "/",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47945208/

相关文章:

c - 并行程序中的 GCC 段错误

c++ - 如何在for循环中用多个字符组成一个字符串

java - 使用java从方法返回子字符串

python - 如何在列表项python中保留分隔符

python - 如何知道拆分中的分隔符是什么?

c - 为什么 fflush() 不被认为是安全的?

c - 如何在 C 中制作一个简单的计算器来保存中间结果

C - 使用其他分隔符分隔字符串?

c - 访问 C linux 中 fork 之前创建的子进程中的字符串数组

java - Java中如何检查字符串的名称是否与整数的名称相同?