2015-05-28 2 views
0

Там некоторый код с токеномзахватить некоторые строки из маркеров в с

char word[30] = "This - is - my - cat"; 
const char s[2] = "- "; 

    char *token; 
    token = strtok(word, s); 

while(token != NULL) 
    { 
     printf(" %s\n", token); 

     token = strtok(NULL, s);} 

так, как захватить строку из маркеров? для примера я хочу захватить «мой».

+1

что вы имеете в виду 'grab'? вам нужно 'strcmp()'? но тогда остерегайтесь '' '' (space) s –

+0

получить «мою» строку, чтобы изменить его. я так не думаю, но если для решения требуется 'strcmp()', я использую. примечание: разделитель отредактирован – Eurika

+0

'strcmp()' is _compare_, а не редактировать. Прочтите страницу руководства. –

ответ

0

Не уверен, что именно то, что вам нужно - это, кажется, это -

char *result[8]; // 8 is completely arbitrary here 
char *token= strtok(word, s); 
int i=0; 
char keep[12]={0x0}; 
while(token != NULL) 
    { 
     printf(" %s\n", token); 
     result[i++]=token; 
     result[i]=NULL; 
     token = strtok(NULL, s); 
    } 
// get one of the fields you want "my" == result[2] 
    strcpy(keep, result[2]); 

результата [] должен иметь достаточное количество элементов для обработки любого количества подстрок вашего код будет бросить на нее.

+0

Я ценю это, но я запутался в 'keep [12] = {0x0}; '' result [8] '&' strcpy (keep, result [2]); ' – Eurika

+0

Кажется, вы начинаете C-кодирование. держать [12] = {0x0}; инициализирует переменную C char, 12 символов. Я думаю, что все, что мы покажем вам, если оно не сделает все, что вы считаете нужным, не поможет. Но. SO НЕ является услугой кодирования. В приведенном выше коде предполагается, что «мой» является третьим элементом массива указателей, называемых результатом. –

0

вы имели в виду что-то вроде этого:

#include <string.h> 
#include <stdio.h> 

#define MAX_LENGTH_OF_A_TOKEN (10) 

char word[30] = "This - is - my - cat"; 
const char s[3] = "- "; 
const char str_my[3] = "my"; 
char buffer[MAX_LENGTH_OF_A_TOKEN]; 


int main() 
{ 
    char *token; 
    token = strtok(word, s); 

    while(token != NULL) 
    { 
     strncpy(buffer, token, strlen(token)+1); 
     { 
      /* Now you have a local copy of your token in buffer. Do whatever you please with it.*/ 
      printf("%s\n", buffer); 
     } 

     token = strtok(NULL, s); 
    } 

    return 0; 
} 
+0

nope, предположим, что мы не знаем, что там 'моя' строка там, оценка не только напечатала 852, но и с суммой. – Eurika

+0

Ну, я только догадываюсь. Неясно, что именно вы имели в виду. Вот измененная версия моего ответа. –

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