Scinde une chaîne avec plusieurs séparateurs à l'aide de strtok en C
J'ai un problème avec le découpage d'une chaîne de caractères. Le code ci-dessous fonctionne, mais seulement si entre les chaînes sont '' (espace). Mais j'ai besoin de diviser les chaînes, même si il est tout espaces char. Est strtok()
même nécessaire?
char input[1024];
char *string[3];
int i=0;
fgets(input,1024,stdin)!='char input[1024];
char *string[3];
int i=0;
fgets(input,1024,stdin)!='\0') //get input
{
string[0]=strtok(input," "); //parce first string
while(string[i]!=NULL) //parce others
{
printf("string [%d]=%s\n",i,string[i]);
i++;
string[i]=strtok(NULL," ");
}
') //get input
{
string[0]=strtok(input," "); //parce first string
while(string[i]!=NULL) //parce others
{
printf("string [%d]=%s\n",i,string[i]);
i++;
string[i]=strtok(NULL," ");
}
L'argument de
j'. e.,
Et votre
Qu'est ce que je voulais savoir, merci beaucoup.
strtok
peut contenir autant de séparateurs que vous le souhaitez.j'. e.,
strtok(input, " \t\r\n\f\v");
et strtok(NULL, " \t\r\n\f\v");
.Et votre
fgets()
déclaration n'est pas bon (il manque un ;
trop). Si elle fait partie d'une boucle, on ne peut pas comparer à l'encontre de \0
à l'échec.Qu'est ce que je voulais savoir, merci beaucoup.
OriginalL'auteur nocturne | 2014-10-27
Vous devez vous connecter pour publier un commentaire.
Un simple exemple qui montre comment utiliser les séparateurs et les améliorations possibles dans votre code. Voir certains commentaires pour les explications.
Être mis en garde sur les carences de
strtok()
(de manuel):OriginalL'auteur P.P.