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

  FORUM HardWare.fr
  Programmation
  C

  Comparaison de char

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Comparaison de char

n°1455736
circeedeva​lette
Posté le 11-10-2006 à 18:54:25  profilanswer
 

Bonjour,
 
j'ai pas fait de C depuis 5 ans alors je galere pour modifier un petit exe...
 
j'ai une variable varname qui me permet de recupere une parametre de ma fonction.
 
int main (int ac, char *av[]) {
 
   char *varname;
   varname = av[2];
 
  if (comparaison) {
      traitement1
  } else {
 
  }
...
 
}
 
En fonction de la valeur de cette variable, je dois faire un traitement ou un autre.
 
J'ai essayé plusieurs facon de faire ma comparaison mais aucune ne marche
 
J'ai essayé la plus simple : varname == "TIME"
j'ai aussi essayé strcmp(varname,"TIME" )
 
Mais je passe toujours dans le cas 2 meme si j'ai bien TIME en entrée.
 
vous pouvez m'aider ?
 
 
 
 

mood
Publicité
Posté le 11-10-2006 à 18:54:25  profilanswer
 

n°1455738
Profil sup​primé
Posté le 11-10-2006 à 19:02:40  answer
 

il manque pas un caractere speciale devant ou derriere ta variable varname dans l'appel à strcmp ? c'est un pointeur donc ....

n°1455760
Taz
bisounours-codeur
Posté le 11-10-2006 à 20:21:16  profilanswer
 

man strcmp

n°1455775
Sve@r
Posté le 11-10-2006 à 21:12:57  profilanswer
 

circeedevalette a écrit :

int main (int ac, char *av[])


On nomme généralement les arguments de main "argc" et "argv". Mais ce n'est qu'une convention et tu peux leur donner le nom que tu veux.
 

circeedevalette a écrit :

J'ai essayé la plus simple : varname == "TIME"


Là tu ne compares que 2 pointeurs...

circeedevalette a écrit :

j'ai aussi essayé strcmp(varname,"TIME" )
Mais je passe toujours dans le cas 2 meme si j'ai bien TIME en entrée.


Si t'as écrit

if (strcmp(varname, "TIME" ))
    traitement1
else
    traitement2


Ben c'est normal. Quand les chaînes sont égales, la fonction renvoie 0 (d'où la remarque de Taz). Donc si elles sont égales, le "if" verra "if (0)" et considèrera le test comme faux !!!

if (strcmp(varname, "TIME" ) == 0)
    traitement1
else
    traitement2


Message édité par Sve@r le 11-10-2006 à 21:14:50

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1455804
Emmanuel D​elahaye
C is a sharp tool
Posté le 12-10-2006 à 00:46:09  profilanswer
 

circeedevalette a écrit :


Code :
  1. int main (int ac, char *av[]) {
  2.    char *varname;
  3.    varname = av[2];
  4.   if (<comparaison> ) {
  5.       traitement1
  6.   } else {
  7.   }
  8. ...
  9. }


j'ai aussi essayé strcmp(varname,"TIME" )
 


 

  • Avant d'utiliser av[2], tu devrais t'assurer que ac > 2, sinon, ça va chi*r.
  • strcmp() est la solution, mais en cas d'égalité elle retourne 0. C'est peut être ça que tu as oublié...

Message cité 1 fois
Message édité par Emmanuel Delahaye le 12-10-2006 à 00:47:07

---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1455831
circeedeva​lette
Posté le 12-10-2006 à 09:40:49  profilanswer
 

Emmanuel Delahaye a écrit :

  • Avant d'utiliser av[2], tu devrais t'assurer que ac > 2, sinon, ça va chi*r.
  • strcmp() est la solution, mais en cas d'égalité elle retourne 0. C'est peut être ça que tu as oublié...


yes, merci pour avoir aidé un boulet !!
 
ca faisait une heure que je tournais dans tous les sens et j'avais plus les idées assez claires.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Comparaison de char

 

Sujets relatifs
Comparaison de deux chaines de caractères "similaires"VARCHAR vs CHAR : quelles différences de perfs?
Comparaison de 2 objets[NSIS][Résolu] comparaison de string
problème avec une fonction qui renvoie un pointeur de char[résolu]eviter de saisir un char a la place d'un int
comparaison de cellulescaster en char * une structure
passer un hexa comme char[C++]comparaison int et char, comment faire ?
Plus de sujets relatifs à : Comparaison de char


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR