Fscanf besoin d'aide

taz -  
carkiasis Messages postés 67 Statut Membre -
bonjour a tous,

voici un moment que je n'arrive plus a avancer dans mon code et je me permet de vous demander de l'aide.
voici mon code :

 char * mot;
  FILE * f;  

  f = fopen ("test","r");
  while (!(feof(f)))
  {
    fscanf (f , "%s", &mot);
    if (mot == "bonjour")  printf("ca marche");
  }
  close(f);


la condition -if ne semble jamais remplie.
Sauriez-vous ou je me trompe ?

3 réponses

carkiasis Messages postés 67 Statut Membre 28
 
L'erreur vient du fait (je pense) que tu ecris ceci :
  if (mot == "bonjour")


Tu ne compares pas 2 chaines de caractères mais l'adresse d'un pointeur (la variable mot) avec une chaine de caractères.
Donc forcement, ca ne marchera jamais...

Il faut donc utiliser strcmp :
  if (!strcmp(mot , "bonjour"))...

Voici comment s'utilise cette fonction (à lire imperativement sous peine de surprises...) :
http://www.cplusplus.com/reference/cstring/strcmp/

Voila. Bonne et heureuse année à tous.
Carkiasis.
0
BugMaker
 
salut,
à moins que l'évaluation soit purement booleenne et "bonjour" est 'vrai' car non nul.
A++
0
taz
 
voici l'évolution de mon code :

char * mot;
  FILE * f;
  mot = malloc(100);

  
  f = fopen("test","r");
  fscanf(f,"%s",mot);
  fclose(f);

  if (strcmp(mot,"bonjour") == NULL) ... // reponse du compilo : attention : comparaison entre un pointeur et un entier


moi ça ne m'aide pas plus, bien que j'ai l'impression d'avoir pris des précuations en plus.
une idée?
0
carkiasis Messages postés 67 Statut Membre 28
 
Ceci est faux :
if (strcmp(mot,"bonjour") == NULL)


La fonction renvoie 0 quand les deux chaines sont identiques et non pas NULL ou je ne sais quel autre pointeur... (le warning de ton compilateur vient de la, comparaison entre ce que renvoie strcmp (entier) et NULL (pointeur).

La solution est comme je l'ai écrite précedemment:
if (!strcmp(mot,"bonjour"))

Autrement dit :
if (strcmp(mot,"bonjour")==0)


Il ne faut pas avoir peur d'aller voir les documentations... Ca évite bien des problèmes...
0