IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

strstr ou strcmp


Sujet :

C

  1. #1
    BnY
    BnY est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 160
    Par défaut strstr ou strcmp
    re bonjour a tous !!

    voila dans une discussion precedente on m'avait conseillé d'utiliser strstr au lieu de strcmp pour un programme qui doit faire ceci:
    • lire un login et un mot de passe entrés par l'utilisateur
    • lire chaque ligne d'un fichier ou sont stockés tous les utilisateurs
    • les comparer
    pour cela on m'avait donc conseillé de chercher le login entré par l'utilisateur a l'aide de strstr dans la ligne et idem pour le pass.

    bon mon programme va bien : si je rentre nimporte koi il marche en ecrivant erreur d'identifiants... etc

    le seul hic c'est le suivant:

    la ligne du fichier est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    durand   durand28   chef regulateur
    et si l'utilisateur rentre

    login: d

    pass: d

    bien evidemment strstr trouve d et d dans la ligne et donc l'acès est autorisé :s:s

    il y aurait pas moyen de corriger cela avec strstr ?? ou je suis obligé de prendre strcmp ??

    merci bien de votre aide

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    Salut

    je pense qu'il va te falloir couper ta chaîne de caractère avant de la comparer avec strcmp... je vois pas grand chose d'autre là... mais je me trompe peut-être
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Moi je découperais la chaine récupérée du fichier avec strtok puis comparaison avec strcmp. D'ailleurs dans le fichier j'aurais plutot bien séparé les données avec un caractère comme ceci:

    durand;durand28;chef regulateur
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  4. #4
    BnY
    BnY est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 160
    Par défaut
    nan mais s'il faut utiliser strcmp ca devrait aller

    deja les fichiers sont fournis donc pas le choix pour l'écriture dedans et ensuite tous les champs sont séparés par deux tabulations donc il suffit de dire que j'arrête a la tab pour avoir le mot

    je cherchais plus a savoir si on pouvait regler le probleme en utilisant toujours strstr...

  5. #5
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Le problème de strstr c'est qu'elle te retourne la premiere occurence d'une chaine donc si tu passe en argument "d" et bien elle va te retourner tout simplement la premiere occurence de de cette chaine c'est tout.
    Je ne pense pas qu'il y ai un moyen de contourner cela avec cette fonction, il y'a beaucoup de fonctions de traitements sur les chaines donc c'est un peu bête de se limiter a une seule !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  6. #6
    BnY
    BnY est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 160
    Par défaut
    lol oui oui c'est sur non pas que je veuille me limiter a une seule, c'est juste que je dois tout recommencer mon bout de code lol : juste un peu de feignantise :p

    bon ben tres bien

    merci encore je vais me mettre au strcmp lol

  7. #7
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    D'où une bonne reflexion avant le codage, ca évite ce genre de problèmes !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  8. #8
    BnY
    BnY est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 160
    Par défaut
    re bjour !!

    bon voila mon probleme de strstr et strcmp est resolu ( finalement j'utilise les deux lol)

    par contre j'ai un petit souci avec un bout de mon code :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    while((ptr3=fgets(chaine,sizeof chaine,fputil))!=NULL) {
     
    clean(chaine,fputil);  
    ptr=strstr(chaine,login);
     
    if (ptr==NULL)
    { 
    continue;
    } else {
     
     while (chaine[i]!='\t')
     {
      logintemp[i]=chaine[i];
      i++;
     }
     logintemp[i]='\0';
     
     printf("\ntest login:%s",logintemp);  /*test*/
     ptr2=strstr(chaine,pass);
     if (ptr2!=NULL)
     {
      i=i+2;
      while (chaine[i]!='\t')
      {
       passtemp[i]=chaine[i];
       i++;
      }
      passtemp[i]='\0';
      printf("\ntest pass:%s",passtemp);  /*test*/
     }
    }
    }
    le logintemp passe tres bien il est parfait, mais le passtemp bug... en fait un caractere vient s'insérer dans la chaine passtemp, au debut de celle-ci ( d'ou un probleme avec strcmp(pass,passtemp), utilisée dans la suite du code...).

    pour plus d'infos a l'affichage de passtemp on voit des signes bizarres genre ]| mélangés un peu comme avec mon ancien problème de '\n' lu par fgets...

    j'ai alors pensé a un \t ou qqch du genre mais je vois pas d'ou il vient ce vilain caractere lool

    si vous avez une idée !!

    merci bien

  9. #9
    BnY
    BnY est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 160
    Par défaut
    rappel: la ligne du fichier se presente comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    durand\t\tdurand28\t\tchefregulateur
    donc je mets dans logintemp le login "durand" puis avec i=i+2; je continue la lecture au caractère 'd' etc pour entrer dans passtemp le pass "durand28"...

  10. #10
    Membre chevronné Avatar de Mayti4
    Inscrit en
    Février 2004
    Messages
    442
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 442
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    while ( chaine[i] != '\t' )
    {
       passtemp[i]=chaine[i];
       i++;
    }
    Au début de la boucle i ne vaut pas 0, utilises une autre variable.

  11. #11
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int j = 0;
    while ( chaine[i] != '\t' )
    {
       passtemp[j]=chaine[i];
       i++;
       j++;
    }

    Tout bêtement
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  12. #12
    BnY
    BnY est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 160
    Par défaut
    merci je m'étais meme pas rendu compte de ca lool ^^

    merci encore

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme sur fonction strcmp
    Par Invité dans le forum C
    Réponses: 8
    Dernier message: 10/01/2006, 00h02
  2. Problème avec strcmp ...
    Par Mike888 dans le forum C
    Réponses: 3
    Dernier message: 24/12/2005, 14h22
  3. strcmp me fait des siennes...
    Par esp dans le forum Langage
    Réponses: 2
    Dernier message: 08/09/2005, 11h43
  4. Utilisation de strcmp!
    Par fmv12 dans le forum C
    Réponses: 10
    Dernier message: 30/10/2003, 12h22
  5. caractère générique utilisable dans strcmp
    Par barthelv dans le forum C
    Réponses: 9
    Dernier message: 01/08/2003, 16h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo