Je suis en train de sérialiser une structure C en chaîne de caractères et de la désérialiser avec strtok()
. Mais, malheureusement, strtok()
ne pas détecter les champs vides (par exemple 1:2::4).
Existe-t-il une fonction alternative ?
Je suis en train de sérialiser une structure C en chaîne de caractères et de la désérialiser avec strtok()
. Mais, malheureusement, strtok()
ne pas détecter les champs vides (par exemple 1:2::4).
Existe-t-il une fonction alternative ?
Drakosha a donné la bonne réponse. Je veux ajouter un exemple pour les deux variantes.
Avec strtok :
char *token;
char *tmp_string;
char delimiter[10] = " |,.:";
strcpy (tmp_string, "1:2::4");
token = strtok(tmp_string, delimiter); // first token
while(token != NULL) {
i++;
printf ("i=%d\tToken: len(%d)\t%s", i, strlen(token), token);
// do something
token = strtok(NULL, delimiter); /* next token */
}
Avec strsep (reconnaîtra "") :
char *token;
char *tmp_string;
char delimiter[10] = " |,.";
strcpy (tmp_string, "1:2::4");
token = strsep(&tmp_string, delimiter); // first token
while(token != NULL) {
i++;
printf ("i=%d\tToken: len(%d)\t%s", i, strlen(token), token);
// do something
token = strsep(&tmp_string, delimiter); /* next token */
}
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.