2013-06-20 2 views
0

Я использовал функцию strtok() в C. Он возвращает указатель на места, в которых он разбивает строку.Как найти индексы, в которых strtok() разбивает строку?

int main() 
{ 
    char s[100]="A B C D"; 
    char *p; 
    p=strtok(s," "); 
    while(p!=NULL){ 
     p=strtok(NULL,"."); 
     //Do something 
    } 
    return 0; 
} 

Как я могу узнать индекс, по которому происходит разделение (желательно в постоянное время)?

ответ

4

Чтобы найти индекс:

ptrdiff_t index = p - s; 

Помимо: Покажите свой реальный код - s = "A B C D" не будет компилировать.

0

Его прост, как описано в предыдущем сообщении. Strtok возвращает адрес. Вычтите возвращенный адрес с начальным адресом массива.

p - s;