2013-03-18 15 views
10

Come suddividere una stringa in token e quindi salvarli in un array?Dividere la stringa in token e salvarli in un array

In particolare, ho una stringa "abc/qwe/jkh". Voglio separare "/" e quindi salvare i token in un array.

uscita sarà tale che

array[0] = "abc" 
array[1] = "qwe" 
array[2] = "jkh" 

si prega di aiutarmi a

+3

è possibile utilizzare strtok –

risposta

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

int main() 
{ 
    char buf[] ="abc/qwe/ccd"; 
    int i = 0; 
    char *p = strtok (buf, "/"); 
    char *array[3]; 

    while (p != NULL) 
    { 
     array[i++] = p; 
     p = strtok (NULL, "/"); 
    } 

    for (i = 0; i < 3; ++i) 
     printf("%s\n", array[i]); 

    return 0; 
} 
+0

Se voglio confrontare array [0] con array [1], cosa dovrei fare? –

+1

Si utilizza un'altra funzione da : if (strcmp (array [0], array [1]) == 0) {// array [0] = array [1]} – rlib

+3

Presume che il numero di token sia noto. –

6

È possibile utilizzare strtok()

char string[]= "abc/qwe/jkh"; 
char *array[10]; 
int i=0; 

array[i] = strtok(string,"/"); 

while(array[i]!=NULL) 
{ 
    array[++i] = strtok(NULL,"/"); 
} 
+3

Come funziona 'array [++ i] = strtok (NULL, "/"); 'lavoro? – Charles

+0

Un puntatore nullo può essere specificato come primo argomento di strtok(), nel qual caso la funzione continua la scansione in cui è terminata una precedente chiamata riuscita alla funzione. –

+1

Ha funzionato abbastanza bene. solo come dare un conteggio dinamico se non conosciamo i numeri di elemento slamp .. – Sam

Problemi correlati