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

VC++ .NET Discussion :

Problème de comparaison de chaînes de caractères


Sujet :

VC++ .NET

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 9
    Points : 10
    Points
    10
    Par défaut Problème de comparaison de chaînes de caractères
    J'écris un code pour lire dans un fichier et récuperer les lignes dans des tableaux par exemple.
    voici le 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    #include <string>
    #include <iomanip>
    #include <iostream>
    #include <fstream>
    #include <cstdlib>
    #include "ctype.h"
     
     
    int main()
    {
        int i;
        char buf[256];
        sprintf(buf,"D:\\Test\\table.txt");
        FILE *fp=fopen(buf,"r");
     
        if (fp==0) {exit(0); std::cout<<"Impossible d'ouvrir le fichier"<<std::endl;}
        else
        { 
          int j=1;
          while ( !feof(fp) )
               { fgets(buf,sizeof(buf),fp);
    	 std::cout <<"nom tab "<<j<<":"<< buf << std::endl;
    	 int a=0;
     
                  while ((strncmp(buf, ";\0",2)!=0)&&(!feof(fp)))
    	    {
    	       a++;
    	       fgets(buf,sizeof(buf),fp);
    	       std::cout <<"attribut "<<a<<":"<< buf << std::endl;
    	       int k=3;
     
    	       while (k!=0)
    	         {
    	            fgets(buf,sizeof(buf),fp);
    	            std::cout<< buf << std::endl;
    	            k--;	
    	          }
     
    	    }
     
    	}
         }
     
         fclose(fp);
         std::cout<<"c'est fini"<<std::endl;
    	char c = getchar();
    	return 0;
    }

    La boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    while ((strncmp(buf, ";\0",2)!=0)&&(!feof(fp)))
    ne fonctionne car la valeur de la ligne n'est pas comparée avec le ";". Je ne sais pas si j'utilise mal la fonction "strncmp" ou pas.
    J'ai besoin de votre aide!
    Fichiers attachés Fichiers attachés

  2. #2
    Membre éprouvé
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Points : 1 067
    Points
    1 067
    Par défaut
    Citation Envoyé par Ayelve Voir le message
    Je ne sais pas si j'utilise mal la fonction "strncmp" ou pas.
    Tu n'as pas besoin de placer un '\0' dans ta chaîne de caractères à comparer.
    De plus, comme j'ai du mal à comprendre ce que tu veux faire, je ne suis pas sûr que l'utilisation de cette fonction soit très appropriée ici.
    Enfin, ce n'est pas avec strncmp que l'on compare un seul caractère.
    "L'ordinateur obéit à vos ordres, pas à vos intentions." [Anonyme]

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 9
    Points : 10
    Points
    10
    Par défaut
    Au fait, je voulais comparer la ligne lue du fichier avec ";". je voulais passer à la table suivante à chaque rencontre du caractère ";".
    Voici le fichier que je suis entrain de lire:
    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
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    VENTE
    numpro
    varchar2(10)
    not null
    oui, codepro(Produit)
    1
    nummag
    varchar2(10)
    not null
    oui, codemag(Magasin)
    1
    cletemps
    varchar2(10)
    not null
    oui, numtemps(Temps)
    1
    qtevend
    number(6)
    not null
    non
    1
    CA
    number(10)
    not null
    non
    1
    ;
    TEMPS
    numtemps
    varchar2(10)
    not null
    oui
    1
    jour
    int
    null
    non
    1
    mois
    int
    not null
    non
    12, (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
    annee
    int
    not null
    non
    3, (2007, 2008, 2009)
    ;
    Produit
    codepro
    varchar2(10)
    not null
    oui
    1
    libpro
    varchar2(10)
    not null
    non
    1
    marque
    varchar2(10)
    null
    non
    4, (française, chinoise, autres)
    categorie
    varchar2(10)
    not null
    non
    4, (boisson, épicerie, crêmerie, autres)
    ;
    Magasin
    codemag
    varchar2(10)
    not null
    oui
    1
    libmag
    varchar2(10)
    not null
    non
    1
    ville
    varchar2(10)
    not null
    non
    5, (Poitiers, Paris, Nantes, Lille, autres)

  4. #4
    Membre éprouvé
    Avatar de Spout
    Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Février 2007
    Messages
    904
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux

    Informations forums :
    Inscription : Février 2007
    Messages : 904
    Points : 1 067
    Points
    1 067
    Par défaut
    devrait suffire.
    Est-ce que ça fonctionne mieux?
    "L'ordinateur obéit à vos ordres, pas à vos intentions." [Anonyme]

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

Discussions similaires

  1. [MySQL] Problème de comparaison de chaîne de caractères
    Par Laurent64 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 15/05/2007, 19h04
  2. Réponses: 2
    Dernier message: 23/03/2006, 12h39
  3. Réponses: 11
    Dernier message: 22/03/2006, 21h57
  4. [Configuration] problème de taille de chaînes de caractères
    Par Wormus dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 21/10/2005, 14h55
  5. Problème pour exécuter une chaîne de caractères
    Par Pongo dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 02/09/2005, 10h34

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