Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3352 connectés 

 


Dernière réponse
Sujet : [ C ] strtok ... comment qu'on fait ça ...
paranoidandroid nom de diou !!
 
j'ai rêvé d'une fonction telle que sprintf ...
rex l'a faite
 
Thanks man..
 
merci pour votre aide ..

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
paranoidandroid nom de diou !!
 
j'ai rêvé d'une fonction telle que sprintf ...
rex l'a faite
 
Thanks man..
 
merci pour votre aide ..
Rawhead rex 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 !
paranoidandroid 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 :cry: 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 ..
karlkox Merde, trop tard, ze voulé lui dire pour le coup du NULL ;)
gilou 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]

gilou 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+,
paranoidandroid 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 "     :ouch:  
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"   :wahoo:
 
 
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]


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)