2013-08-31 4 views
1

Как вырезать строку, используя 2 разделителя в C?Как вырезать строку с использованием 2 разделителей

Я получаю строку от пользователя в этой платформе:

cp <path1> <path2> 

Мне нужно, чтобы получить тракты в новую строку (каждый пути к одной строке).

Я попытался использовать strstr и strtok, но это не сработает.

Я не знаю длины дорожек. Я также просто знаю, что они начинаются с " \" (это разделители, которые у меня есть (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

ли в основной функции? Если это так, основная функция имеет параметры argc (int) и * argv [] (string), которые вы можете делать, что хотите.

+0

Я дал мой код посмотреть :) – Dkova

+0

Как насчет изменения вашего кода? Вы можете использовать int main (int argc, char * arg []) вместо malloc, и вы передаете эти строки в своих параметрах программы, чтобы вы могли делать то, что вы показываете в своем комментарии (// что было вводом ...) – Victor

+0

Я не могу этого сделать, мне нужно это сделать scanf – Dkova

Смежные вопросы