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 :

[debutant] comparer directement une chaine avec une autre precise dans un fichier


Sujet :

C

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 21
    Points : 11
    Points
    11
    Par défaut [debutant] comparer directement une chaine avec une autre precise dans un fichier
    salut a vous tous j'ai un probleme dans la comparaison de mon password tapé avec le password qui est enregistré dans mon fichier et qui a le meme indice que le login voila un exemple :

    login.txt (henry_deco_zidane)
    password.txt (arsenal_barça_real)
    nb: chque login est password dans une ligne

    Si le user tape deco automatiquement je compare son password avec "barça" qui est dans le fichier password.txt .
    voici mon code et merci d'avance
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    #include<stdio.h>
    #include<conio.h>
    #include<string.h>
    void main()
    {
     
    //declarations
    FILE *plogin=fopen("C:\\login.txt","r");
    FILE *ppass=fopen("C:\\password.txt","r");
    char login[20],id[20];
    char pass[50],pw[50];
    int carac, v,r,i,j,trouve;
    clrscr();
    //Un petit bonjour !
    gotoxy(37,1);textcolor(1);cprintf("_______");
    gotoxy(35,3);textcolor(1);cprintf("|");
    gotoxy(37,3);textcolor(3);cprintf("Bonjour");
    gotoxy(45,3);textcolor(1);cprintf("|");
    gotoxy(37,4);textcolor(1);cprintf("_______");
    printf("\n\n\n");
     
    //entrees
    gotoxy(33,8);textcolor(9);cprintf("LOGIN : ");gets(login);
    gotoxy(33,10);textcolor(9);cprintf("PASSWORD : ");
    i=0;
    while((pass[i]=getch())!=13)
    {
     
    	putchar('*');
    	i++;
     
    }
    pass[i]='\0';
     
    //traitements
    i=0;
    trouve=0;
    while(!feof(plogin)&&!trouve)
    {
    fscanf(plogin,"%s\n",id);
    v=strcmp(login,id);
     if(!v)
       trouve=1;
     else
     i++;
    }
    fclose(plogin);
    if(trouve)
    {   //(mon bleme est la )lire directement la chaine qui a la ligne i ds le fichier password.txt
      { fscanf(ppass,"%s",pw);
       r=strcmp(pass,pw);
      if(!r)
       { gotoxy(34,18); textcolor(2);	   cprintf("BIENVENU %s",login); }
      else
       { gotoxy(34,18); textcolor(4);      cprintf("\n\aWARNING!!!");}
       }
    }
    else
     
      { gotoxy(33,18); textcolor(4);      cprintf("\n\aWARNING !!!!");}
     
    getch();
    }

  2. #2
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Bonjour,
    C'est quoi la question ?
    Tu dis avoir un problème... lequel est-ce ?
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    vous avez vu le code ? je m'arrete dans la comparaison du pw avec celui stocké dans le fichier et qui a le mm indice que celui du login trouvé .

  4. #4
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par khedji
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //(mon bleme est la )lire directement la chaine qui a la ligne i ds le fichier password.txt
    vous avez vu le code ? je m'arrete dans la comparaison du pw avec celui stocké dans le fichier et qui a le mm indice que celui du login trouvé .
    Il faut lire i-1 lignes (sans les traiter), pour arriver à celle qui t'intéresse.
    Avec un fichier texte, il n'y a pas le choix.
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 21
    Points : 11
    Points
    11
    Par défaut
    je peux comprendre dans ce cas que c'est impossible de traiter directement une chaine de caractere sur une ligne précise ?!!!

  6. #6
    Membre éprouvé Avatar de Jérémy Lefevre
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juin 2004
    Messages
    898
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2004
    Messages : 898
    Points : 969
    Points
    969
    Par défaut
    j'ai rien compri a ton probleme! tu recupere le pw du fichier ou non??
    Rien ne se perd, rien ne se crée, tout se transforme

    ------- -------

  7. #7
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par khedji
    je peux comprendre dans ce cas que c'est impossible de traiter directement une chaine de caractere sur une ligne précise ?!!!
    L'accès à un fichier texte en C est séquentiel. C'est à dire qu'il faut accéder à une ligne après l'autre, dans l'ordre. Il n'est pas possible de sauter directement à celle qui t'intéresse.

    Pour un fichier binaire, c'est différent. Comme tu connais la taille d'un enregistrement, tu peux sauter ceux qui ne t'intéressent pas et accéder directement à l'un d'entre eux.

    Donc pour répondre à ta question, il te faut :
    - ouvrir ton fichier texte,
    - lire une par une les (i-1) premières lignes de ton fichier (par fgets par exemple),
    - lire et traiter la (i)ème ligne,
    - fermer ton fichier texte.
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  8. #8
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par khedji
    je peux comprendre dans ce cas que c'est impossible de traiter directement une chaine de caractere sur une ligne précise ?!!!
    Exactement. Un ficher texte est exclusivement à lecture séquentielle (mais on sait revenir au début avec rewind()), à moins de l'indexer au préalable et de le traiter en mode raw (binaire). Mais ce n'est alors pas portable.
    Pas de Wi-Fi à la maison : CPL

  9. #9
    Membre éprouvé Avatar de zooro
    Homme Profil pro
    Développeur Java
    Inscrit en
    Avril 2006
    Messages
    921
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Avril 2006
    Messages : 921
    Points : 1 260
    Points
    1 260
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Exactement. Un ficher texte est exclusivement à lecture séquentielle, à moins de l'indexer au préalable.
    /mode HS
    Juste par curiosité, comment on fait pour indexer un fichier texte ?
    On fait une correspondance entre le début de chaque ligne et le déplacement depuis le début du fichier ?
    /fin mode HS
    [alkama] quelqu'un est allé voir la guerre des mondes?
    [@Chrisman] j'espère pour spielberg
    --- bashfr.org

  10. #10
    Expert éminent sénior
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par zooro
    /mode HS
    Juste par curiosité, comment on fait pour indexer un fichier texte ?
    On fait une correspondance entre le début de chaque ligne et le déplacement depuis le début du fichier ?
    /fin mode HS
    Un truc comme ça, oui. Evidemment, il faut le faire en mode binaire pour que les déplacements aient un sens, et les fins de lignes doivent être interprétées à la main en fonction du système, donc pas portable...
    Pas de Wi-Fi à la maison : CPL

Discussions similaires

  1. Réponses: 1
    Dernier message: 13/04/2015, 11h17
  2. comparer un String tableau avec une chaine de caractère
    Par artemis93 dans le forum Collection et Stream
    Réponses: 2
    Dernier message: 01/03/2011, 11h27
  3. [XL-2002] Macro de comparaison d'une cellule d'une feuille avec une cellule d'une autre feuille.
    Par steelydan dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 08/09/2010, 12h59
  4. Réponses: 3
    Dernier message: 18/03/2008, 14h28
  5. [Regex]Match d'une regexp avec une chaîne avec caractères spéciaux
    Par gdawirs dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 25/11/2005, 12h24

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