【发布时间】:2013-08-31 13:22:53
【问题描述】:
如何在 C 中使用 2 个分隔符切割字符串?
我从这个平台的用户那里得到一个字符串:
cp <path1> <path2>
我需要将路径放入一个新字符串(每个路径指向一个字符串)。
我尝试使用strstr 和strtok,但它不起作用。
我不知道路径的长度。我也只知道它们以 " \" 开头(这是我拥有的分隔符 (space + \))。
这是我尝试过的 #包括 #包括 #包括
int main()
{
char *c;
char *ch = malloc(1024);
while (strcmp(ch, "exit"))
{
scanf("%[^\n]%*c", ch); //what was the input (cp /dor/arthur /king/apple)
c = malloc(sizeof(strlen(ch) + 1));
strcpy(c, ch);
char *pch = strtok(c, " //");
printf("this is : %s \n", pch); //printed "this is: cp"
}
}
【问题讨论】:
-
你说它不起作用是什么意思? strstr 和 strtok 允许您在字符串中定位内容,它们应该非常适合这项工作。
-
请向我们展示您的尝试。
-
你确定路径本身没有空格(空格)吗?
-
OT:不使用
char * c = malloc(strlen(ch) + 1); strcpy(c, ch);,您可能更愿意使用char * c = strdup(ch);。 -
sizeof(strlen(ch) + 1))返回size_t的大小,即 4 或 8,具体取决于您使用的是 32 位还是 64 位操作系统。