Comparer des stings : strcmp ? [Résolu]

Signaler
Messages postés
16
Date d'inscription
mercredi 25 juillet 2007
Statut
Membre
Dernière intervention
16 avril 2008
-
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
-
Bonjour
Voila ce que j'ai fait comme petit programme, je souhaiterai que la la boucle se termine lorsque j'ai trouvé le mot "impulsa" dans le fichier. seulement, si strcmp me sort bien des 0 quand str="impulsa", il me sort absolument n'importe quoi quand str!="impulsa". Alors évidemment je peux m'en sortir, mais pourquoi n'obtins-je pas 1 ? J'aimerai avoir quelque chose de plus propre.
Merci

#include <string.h>
int main () {
    int j,i,k,l,m,n,o;
    char str[100];
    FILE * log;
    log = fopen ( "/....../20070215_110251.log" , "r" );
    do
        {
        k=fscanf (log, "%s\0", str);
        printf("%s  \n",str);
        l=strcmp(str,"impulsa");
        printf("%s %s %d\n",str,"impulsa",l);
        }while(l==1 && EOF !=k);

  fclose(log);
  return 0;
}

2 réponses

Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Tu peux utiliser la fonction strstr() qui permet de trouver une chaine dans une autre chaine. Elle retourne un pointeur sur le premier caractère de la chaine trouvée. Sinon, elle retourne 0.
Messages postés
55
Date d'inscription
mardi 10 juin 2003
Statut
Membre
Dernière intervention
11 décembre 2008

strcmp ne retourne pas un booleen mais un int. il te "classe" tes string si c'est positif c'est que ton premier string est alphabétiquement avant (ou apres je c plus très bien mais l'idée est là).