2013-08-31 51 views
1

如何使用C中的2個分隔符剪切字符串?如何使用2個分隔符剪切字符串

我收到來自用戶的字符串,在這個平臺上:

cp <path1> <path2> 

我需要得到pathes進入一個新的字符串(每個路徑,將一個字符串)。

我試圖使用strstrstrtok但它不起作用。

我不知道路徑的長度。我也只知道他們以" \"(這是我的分隔符(space + \))開頭。

這就是我試圖 的#include 的#include 的#include

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" 
    } 
} 
+0

你是什麼意思,它不工作? strstr和strtok允許你找到一個字符串中的東西,他們應該是完美的工作。 – Gigi

+0

請給我們看看你的嘗試。 – alk

+0

你確定自己有沒有空白(空格)? – alk

回答

1

使用strtok()。上面的鏈接包含使用strtok().

您罐使用2個定界符(space + \)與strtok()這樣的例子:

str = strtok(str, " \\"); 
+0

這是行不通的我現在編輯我的Q看看代碼 – Dkova

+0

你應該真的試着理解答案中鏈接的例子。 – alk

+0

'strtok'定位了任何*分隔符中的第一個,所以在這種情況下,它將分解每個空格*或*反斜線上的輸入。 OP應該使用'strstr'來代替。 – usr2564301

-1

是在主函數?如果是這樣,main函數有argc(int)和* argv [](string)參數,你可以做你想做的事情。

+0

我給我的代碼看看:) – Dkova

+0

如何改變一點你的代碼?你可以使用int main(int argc,char * arg [])而不是malloc,並在程序參數中傳遞這些字符串,你可以做你在評論中顯示的內容(//輸入是什麼......) – Victor

+0

我不能這樣做我需要通過scanf來做 – Dkova

相關問題