strtok ... comment qu'on fait ça ... [ C ] - Programmation
Marsh Posté le 15-02-2002 à 12:43:37
cmd[0] = strtok ( chaine, separateur );
cmd[1] = strtok ( NULL, "" );
Mais il faut que tu comprennes que strtok insere des zeros dans ta chaine initiale.
Donc si tu veux la reconstituer, il faudra concatener tes cmd[0], "/" et cmd[1].
"grep -i -l -d / *.* >> result.txt"
|
chaine avant l'appel a strtok.
appel a strtok(chaine, "/" );
"grep -i -l -d \0 *.* >> result.txt"
|
chaine apres l'appel a strtok. le separateur est remplace par \0.
strtok memorise la position juste apres ce \0.
Si tu rapelles strtok avec comme premier parametre NULL, il va en fait demarrer de cette position memorisee.
Si de plus, tu passe en seconde chaine une chaine vide, il va aller jusqu'au bout de la chaine:
appel a strtok(NULL, "" );
" *.* >> result.txt"
|
demarre ici, et va jusqu'au bout puisqu'il y a pas de separateur a trouver...
A+,
Marsh Posté le 15-02-2002 à 12:46:45
Tu peux aussi proceder ainsi:
strtok(chaine, separateur);
len = strlen(chaine)+1;
cmd[0] = chaine;
cmd[1] = chaine+len;
A+,
[jfdsdjhfuetppo]--Message édité par gilou--[/jfdsdjhfuetppo]
Marsh Posté le 15-02-2002 à 14:37:46
Ben merci ... ça m'a franchement aidé ..
maintenant que j'ai mes boutes éparpillés .. j'arrive pas à les recoller ensemble ...
j'ai admettons
cmd[0] = "grep -i -l -d "
cmd[1] = " *.* >> result.txt"
et aussi ma ptite variable x que je veux coller entre ..
j'aimerais avoir chaine = "grep -i -l -d x *.* >> result.txt"
Mais j'y arrive paaaaas je pète un plomb.
quand je fais :
strcpy(strcpy(cmd[0]+dbt,x)+dbt+var,cmd[1]); avec dbt=strlen(cmd[0]) et var=strlen(x)
j'obtiens n'importe quoi ... un truc du genre "grep -i -l -d xx"
pffffffff
Merci pour vos réponses ..
Marsh Posté le 15-02-2002 à 15:15:02
La y a belle tentative !
Moi j'utilise plutot sprintf quand je veux concatener des chaines de caracteres ou je veux inserer des petites choses :
cmd[0] = "grep -i -l -d "
cmd[1] = " *.* >> result.txt"
char *result ;
result=malloc((strlen(cmd[0])+strlen(cmd[1])+2)*sizeof(char)) ;
sprintf(result,"%s %i %s", cmd[0],x,cmd[1]) ;
Et hop !
Marsh Posté le 15-02-2002 à 16:06:27
nom de diou !!
j'ai rêvé d'une fonction telle que sprintf ...
rex l'a faite
Thanks man..
merci pour votre aide ..
Marsh Posté le 15-02-2002 à 12:08:16
Bonjour tout le monde ...
Je bloque sur une fonction en C : strtok
chuis pas très doué en C en ce qui concerne les chaine de caracteres et les pointeurs
voilà un bout :
char *chaine = "grep -i -l -d / *.* >> result.txt";
char *separateur = "/";
char *cmd[2];
cmd = strtok ( chaine, separateur );
Voilà je que j'obtiens en débuggant .. ( pas de warning ni d'erreur a la compil )
je demandais pas vraimeent ça :
cmd[0] = "grep -i -l -d "
cmd[2] = "grep -i -l -d "
et il me détruit au ssi le "chaine"
chaine = "grep -i -l -d "
cmd[1] = ""
il me fait une "Exception" en débuggant lorsqu'il fait strlen(cmd[1]);
Comment je peux récuperer ce qu'il y a après le "/" dans chaine : " *.* >> result.txt"
Je fais cela dans le but de pouvoir insérer une variable à l'intérieur de chaine ensuite à l'aide de strcat.
Merci
[jfdsdjhfuetppo]--Message édité par paranoidandroid--[/jfdsdjhfuetppo]