comment utiliser "strcmp"?

comment utiliser "strcmp"? - C - Programmation

Marsh Posté le 26-10-2003 à 21:35:42    

j'ai un prog en c à faire, qui est :  
 
-lire 100 valeurs entières, écrire la plus grande des valeurs et le nombre de fais ou cette plus grande valeur est apparue
 
voici ce que j'ai fait :  
 
#include <stdio.h>
#include <string.h>
void main()
 
{
 int pg, cpt, nbf, val;
//pg=plus grand, nbf=nombre de fois
 
printf("donner un nombre\n" );
scanf("%d",& pg);
 
cpt=1;
nbf=1;
 
do
{
 printf("donner un nombre\n" );
 scanf("%d", & val);
 
 if(val>pg)
 {
  pg=val;
  nbf=1;
}
 else
 {
  if(strcmp(val, pg)==0)    //si (val==pg)
  {
   nbf=nbf+1;
  }
 }
cpt=cpt+1;
}
while (cpt<5);
 
printf("le plus grand est: %d , il est apparu : %d\n", pg, nbf);
}
 
 
Le débugger me signale une erreur au niveau du "strcmp" l'erreur est : error C2664: 'strcmp' : cannot convert parameter 1 from 'int' to 'const char *'
 
j'ai mis en commentaire ce que j'ai trouvere en algo, en l'occurence si(val==pg)

Reply

Marsh Posté le 26-10-2003 à 21:35:42   

Reply

Marsh Posté le 26-10-2003 à 21:39:29    

man strcmp
 
PS : le débugger n'interviens que quand tu auras réussi a lancer ton premier programme C. Pour l'instant tu bloques sur la phase de compilation.
 
PPS : et si tu as du mal a comprendre le manuel de strcmp, voici l'info la plus important pour toi : strcmp sert à comparer des chaines de caractères ! Toi tu veux tester si 2 nombres sont égaux alors fait juste "if (val == pg)" !!!


Message édité par Kristoph le 26-10-2003 à 21:42:02
Reply

Marsh Posté le 26-10-2003 à 21:42:44    

val et pg sont des int, strcmp sert à comparer des chaînes de caractères et renvoit un int.

Reply

Marsh Posté le 26-10-2003 à 21:51:44    

Merci beaucoup, ca marche, je n'oublierais pas maintenant que strcmp sert à comparer des chaines de caractères, et que la phase ou ça bloque, c pas le débugger, mais le compilateur
 
par contre j'ai une autre question, je remarque que mon prog marche, mais si je tape des lettres au lieu des nombres, ca marchera tjrs mais avec des résultats faux, donc est ce qu'il n'existerait pas une fonction ou une ligne à rajouter qui dirait que si l'utilisateur tape des lettre au lieu de nombres, un message s'afficher lui disant qu'on lui demandes de taper des chiffres et pas des lettres
 
Merci d'avance!!!

Reply

Marsh Posté le 26-10-2003 à 21:54:34    

mais qu'est-ce qu'on vous apprend en classe? :heink:


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 26-10-2003 à 21:59:56    

Tu peux toujours tenter de saisir une chaîne avec gets() puis de la convertir ensuite avec un truc du genre atoi(), et si il y a une erreur bah...

Reply

Marsh Posté le 26-10-2003 à 22:02:33    

cronos6 a écrit :

Merci beaucoup, ca marche, je n'oublierais pas maintenant que strcmp sert à comparer des chaines de caractères, et que la phase ou ça bloque, c pas le débugger, mais le compilateur
 
par contre j'ai une autre question, je remarque que mon prog marche, mais si je tape des lettres au lieu des nombres, ca marchera tjrs mais avec des résultats faux, donc est ce qu'il n'existerait pas une fonction ou une ligne à rajouter qui dirait que si l'utilisateur tape des lettre au lieu de nombres, un message s'afficher lui disant qu'on lui demandes de taper des chiffres et pas des lettres
 
Merci d'avance!!!


 
Bienvenu dans le monde merveilleux de la fonction scanf !
 
A mon avis, ne t'embète pas avec ça. C'est lourd à contourner et c'est d'un interet réduit de toute façon ( on n'utilises pas vraiment scanf pour les entrées utilisateur sauf dans l'enseignement :D )

Reply

Sujets relatifs:

Leave a Replay

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