[C] strstr ?

strstr ? [C] - Programmation

Marsh Posté le 15-07-2002 à 12:49:25    

J'ai deux chaînes. ch1 contient ch2. Je veux trouver la position dans ch1 du premier caractère de ch2.
 
Comment puis je faire? Je ne comprends pas bien la fonctionnement de strstr.
 
Merci d'avance!
 
CHaiCA

Reply

Marsh Posté le 15-07-2002 à 12:49:25   

Reply

Marsh Posté le 15-07-2002 à 12:58:55    


       

Code :
  1. #include <stdio.h>
  2.         #include <string.h>
  3.         char* string = "une chaine de caracteres";
  4.         char* resultat;
  5.         resultat = strstr (string, " " );
  6.         printf ("\nLa recherche du 1er blanc donne : [%s]\n ", resultat);


strstr, semble effectivement être ce dont tu as besoin, pour le problème de compréhension, le mieux c'est de se taper un petit bout de code et de faire varier les paramètres

Reply

Marsh Posté le 15-07-2002 à 12:59:50    

ou encore man strstr ca peut aider...

Reply

Marsh Posté le 15-07-2002 à 13:05:13    

J'ai un "incompatible types in assignement" au niveau de :
 resultat = strstr (string, " " );  
 
CHaiCA

Reply

Marsh Posté le 15-07-2002 à 13:06:53    

chaica a écrit a écrit :

J'ai un "incompatible types in assignement" au niveau de :
 resultat = strstr (string, " " );  
 
CHaiCA




normal, j'ai pas alloué résultat. pour pas t'embêter avec ça tu fait char resultat[200];
edit: avant que tu demandes: tu fais pareil avec string


Message édité par prettysmile le 15-07-2002 à 13:08:24
Reply

Marsh Posté le 15-07-2002 à 13:13:12    

heu faut pas allouer resultat, vu que strstr te retourne un pointeur de char, et non pas vraiment une chaîne (vu qu'en C on ne sait pas le faire)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 15-07-2002 à 13:14:08    

antp a écrit a écrit :

heu faut pas allouer resultat, vu que strstr te retourne un pointeur de char, et non pas vraiment une chaîne (vu qu'en C on ne sait pas le faire)




dsl, en digestion, puis le problème ça semblait être strstr!

Reply

Marsh Posté le 15-07-2002 à 13:15:08    

Je vais me faire taper sur les doigts mais je pige pas ton code.
 
-Déclaration des deux strings OK
 resultat = strstr (string, " " ); // la fonction strstr te retourne un pointeur qui indique l'emplacement de l'occurence de la chaîne recherchée dans la chaine principale.
 
printf ("\nLa recherche du 1er blanc donne : [%s]\n ", resultat);[/cpp]  // là tu veux faire apparaître un pointeur? je pige pas. Moi ce que je voudrais c'est une position dans la chaine genre string[3] qui me permette de faire apparaître le premier caractère de la chaîne recherchée par la suite.
 
CHaiCA
 

Reply

Marsh Posté le 15-07-2002 à 13:17:55    

chaica a écrit a écrit :

Je vais me faire taper sur les doigts mais je pige pas ton code.
 
-Déclaration des deux strings OK
 resultat = strstr (string, " " ); // la fonction strstr te retourne un pointeur qui indique l'emplacement de l'occurence de la chaîne recherchée dans la chaine principale.
 
printf ("\nLa recherche du 1er blanc donne : [%s]\n ", resultat);  // là tu veux faire apparaître un pointeur? je pige pas. Moi ce que je voudrais c'est une position dans la chaine genre string[3] qui me permette de faire apparaître le premier caractère de la chaîne recherchée par la suite.
 
CHaiCA
 
 




ben le premier caractère c'est resultat[0]
t'as lancé ce code? qu'obtiens tu à l'affichage?

Reply

Marsh Posté le 15-07-2002 à 13:48:33    

Voila mon code:  
 
 

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. char* string = "une chaine de caracteres";
  6. char* resultat;
  7. resultat = strstr(string,"n" );
  8. printf("\nLe resultat du 1er n connu donne : [%c]", resultat);
  9. return 0;
  10. }


 
et j'ai comme resultat à l'execution :
 
Le resultat du 1er n connu donne : [`]
 
ChaiCA


Message édité par chaica le 15-07-2002 à 13:49:37
Reply

Marsh Posté le 15-07-2002 à 13:48:33   

Reply

Marsh Posté le 15-07-2002 à 13:52:23    

chaica a écrit a écrit :

Voila mon code:  
 
 

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. char* string = "une chaine de caracteres";
  6. char* resultat;
  7. resultat = strstr(string,"n" );
  8. printf("\nLe resultat du 1er n connu donne : [%c]", resultat);
  9. return 0;
  10. }


 
et j'ai comme resultat à l'execution :
 
Le resultat du 1er n connu donne : [`]
 
ChaiCA




heu... resultat, a priori c char* donc pour l'afficher %s, si tu veux afficher un caractère de resultat, il faut indiquer un indic (resultat[0] par ex)

Reply

Marsh Posté le 15-07-2002 à 13:54:23    

chaica a écrit a écrit :

Voila mon code:  
 
 

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main()
  4. {
  5. char* string = "une chaine de caracteres";
  6. char* resultat;
  7. resultat = strstr(string,"n" );
  8. printf("\nLe resultat du 1er n connu donne : [%c]", resultat);
  9. return 0;
  10. }


 
et j'ai comme resultat à l'execution :
 
Le resultat du 1er n connu donne : [`]
 
ChaiCA




 
printf("\nLe resultat du 1er n connu donne : [%d]", resultat-string);
 
Là tu auras la position !!!
 
Et avant de faire chaine[resultat-string], contrôle la valeur de resultat. (NULL ???).


---------------
Le site de l'année :D (XHTML 1.0 strict) : http://darkoli.free.fr/index.html
Reply

Marsh Posté le 15-07-2002 à 14:02:04    

Merci DarkOli , exactement ce que je voulais!
 
Bon je vais étudier ca un peu et continuer.
 
Merci à tout ceux qui sont intervenus!
 
CHaiCA
 
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed