bonjour tlm
Je dois réaliser, en C, un programme qui doit permettre à partir d'une chaine de caractères d'extraire des mots selon des délimiteurs passés en paramètres.
Petit exemple,à partir de :
>leprogramme "unechaine,àdécou-per" ",.-"
je souhaite obtenir :
>unechaine
>àdécou
>per
Mon problème majeur est que je n'ai pas de niveau en C ^^.
Malgré cela, j'ai une première ébauche (dans cette ébauche, chacun des délimiteurs est passé séparément en paramètre); j'utilise strtok() afin de découper la chaine.
int main(int argc, char *argv[])
{
while(1){
char * str=""; //str est une chaine de caractères à découper
char * pch=""; //pch est une chaine : les caractères restant à découper
char * delimiters[10]; //delimiters : les caractères utilisés pour découper str, 10 maximums
int i=0;
str=argv[1]; //str reçoit la premier argument : la chaîne à découper
//ensuite je boucle : chacun des autres paramètres est inscrit dans 'delimiters'
for (i=1;i<=argc;i++) {
delimiters[i]=argv[i+1];}
//ensuite je découpe la chaine selon les délimiteurs
pch = strtok(str,*delimiters);
while (pch != NULL)
{printf ("%s\n",pch);
pch = strtok (NULL,*delimiters);}
}
return 0;
}
Donc voila mon problème : ça ne marche pas ^^
En plus, je souhaiterais passer tous les délimiteurs en tant qu'un seul paramètre ("*-," par exemple mais est-il possible dans ce cas de prendre l'espace comme paramètre ?
Le premier prototype du programme était :
int main(int argc, char *argv[])
{
while(1){
char str[500]; //fixer une longueur de texte max en nb de caracteres
char * pch;
const char * delimiters[10]; //fixer un nombre de délimiteurs max
printf("Veuillez entrer le texte : " );
gets(&str);
printf("Veuillez entrer les delimiteurs : " );
gets(&delimiters);
pch = strtok(str,delimiters);
while (pch != NULL)
{printf ("%s\n",pch);
pch = strtok(NULL,&delimiters); }
}
return 0;
}
------> ceci marche, mais je veux passer la chaine à découper et les délimiteurs en paramètres !
Merci d'avance à ceux qui sont doués en C ^^