variable qui bug

variable qui bug - C++ - Programmation

Marsh Posté le 10-01-2005 à 13:48:58    

Voilà un petit prog pour m'entrainer à passer des arguments.
J'ai un petit soucis avec la comparaison de l'argument qui m'affiche toujours le HELLO WORLD, si vous pouviez me donner un coups de mains svp, en m'expliquant pkoi....
Il parait que sa vient de l'ascii, mais sa marche pas non plus

Code :
  1. #include <stdio.h>
  2. int main(int argc, char *argv[])
  3. {
  4.   int i;
  5.   printf("Nom du programme: %s\n", argv[0]);
  6.   for(i=1; i<argc; i++)
  7.   {
  8.       printf (argv[i]);
  9.       if(argv[i]="t" ) {
  10.    printf("hello world" );   
  11.       } else {
  12.          
  13.    printf("Argument n°%d: %s\n", i, argv[i]);
  14.   }
  15.   printf("\nBye ...\n" );
  16.   return 0;
  17. }


Message édité par scull le 10-01-2005 à 13:53:43

---------------
Créer son forum gratuit |  Mon beau blog phpBB caÿ le mal :o
Reply

Marsh Posté le 10-01-2005 à 13:48:58   

Reply

Marsh Posté le 10-01-2005 à 13:54:28    

euh...
 
relis bien la condition et puis va te cacher :o

Reply

Marsh Posté le 10-01-2005 à 13:55:02    

if(argv[i]="t" ) ???
 
Ca serait pas plutot :
 
if(argv[i]=="t" )

Reply

Marsh Posté le 10-01-2005 à 13:55:25    

cad ? je suis un gros noob...
if(argv[i]=="t" ) {


---------------
Créer son forum gratuit |  Mon beau blog phpBB caÿ le mal :o
Reply

Marsh Posté le 10-01-2005 à 13:56:14    

avec de ==, sa me met maintenant tt le temps
Argument n°... ...etc....


---------------
Créer son forum gratuit |  Mon beau blog phpBB caÿ le mal :o
Reply

Marsh Posté le 10-01-2005 à 13:56:22    

je dirait meme
 
if(argv[i]=='t') {
 
"t" != 't'
 
et un strcmp ??

Reply

Marsh Posté le 10-01-2005 à 13:57:20    

=    =>  opérateur d'affectation (ex : a = b : a prend la valeur de b)
 
==   =>  opérateur de comparaison (ex : a == b : est ce que a et b sont égaux ?)

Reply

Marsh Posté le 10-01-2005 à 13:59:12    

la condition est de vérifier si argv[i] est strictement égal à "test", avec les ' ' sa me met une erreur :  
12 E:\ltpt\us\main.cpp ISO C++ forbids comparison between pointer and integer


---------------
Créer son forum gratuit |  Mon beau blog phpBB caÿ le mal :o
Reply

Marsh Posté le 10-01-2005 à 14:00:23    

utilise strcmp :o

Reply

Marsh Posté le 10-01-2005 à 14:04:44    

12 E:\ltpt\us\main.cpp ISO C++ forbids comparison between pointer and integer  
 
C'est assez normale car argv est un pointeur de pointeur. Autrement dit argv[i] est un pointeur et contient une adresse. Quant à 't', il doit être interprété comme un entier, c'est aussi normal, à mon avis, car l'opérateur == ne permet pas la comparaison de caractères. Il doit y avoir conversion de 't' en son code ASCII, donc en int.
 
KangOl t'a donné la solution en te conseillant l'opérateur strcmp qui est tout à fait désigné pour ce genre de comparaison !

Reply

Marsh Posté le 10-01-2005 à 14:04:44   

Reply

Marsh Posté le 10-01-2005 à 14:08:59    

je viens de tester la fonction strcmp et déjà sa marche :)
bon c'est moins beau, et j'ai du remanier le code :)
merci donc :)
 

Code :
  1. #include <stdio.h>
  2. #include <string.h>
  3. int main(int argc, char *argv[])
  4. {
  5.   int i;
  6.   printf("Nom du programme: %s\n", argv[0]);
  7.   for(i=1; i<argc; i++)
  8.   {
  9.       printf (argv[i]);
  10.      
  11.    if (strcmp(argv[i],"test" )==0) 
  12.              
  13.    printf("hello world" );   
  14.       }
  15.          
  16.    printf("Argument n°%d: %s\n", i, argv[i]);
  17.   printf("\nBye ...\n" );
  18.   return 0;
  19.   }


---------------
Créer son forum gratuit |  Mon beau blog phpBB caÿ le mal :o
Reply

Sujets relatifs:

Leave a Replay

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