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 :

Probleme pour comparer


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    ingé sys
    Inscrit en
    Avril 2004
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : ingé sys

    Informations forums :
    Inscription : Avril 2004
    Messages : 156
    Par défaut Probleme pour comparer
    salut jai un souci avec une fonction en C. Je voudrais faire en sorte que dans mon fichier il n'y est pas de doublon. Donc pas 2 fois la meme personne avec le meme nom et le meme prenom. Jai donc fait une fonction.
    Pour l'instant je ne fais pas de paramètres, jai juste testé. Je demande donc le nom et le prenom, et je verifie si cette personne est deja inscrite dans le fichier. Mais ça passe pas. Jai l'impression qu'il me bloque au niveau de la 1ere personne inscrite.
    Voila 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
    34
    35
    36
    37
    38
    39
    40
    void doublon()
    {
    	char n[LG];
    	char nom[LG];
    	char prenom[LG];
    	FILE *f;
    	int trouve=0;
    	seleve eleve;
     
    	strcpy(n,nomdufichier());
     
     
    f=fopen(n,"r");	
     
     
    		do{
     
    			printf("\n\nEntrez un nom:");
    			flushall();
    			gets(nom);
    			flushall();
    			printf("\nEntrez un prenom:");
    			flushall();
    			gets(prenom);
    			flushall();
    			fread(&eleve,sizeof(eleve),1,f);
    			if( (strcmp(nom,eleve.nom)==0) && (strcmp(prenom,eleve.prenom)==0) )
    			{
     
    				trouve=1;
    				flushall();
    				printf("Y a un doublon");
    			}
    		}while ( (!trouve) && (!feof(f)) );
     
    flushall();
    printf("Y a pas de doublon");
    fclose(f);
    getch();
    }
    Comment faire pour que ça marche?
    Merci d'avance

  2. #2
    Expert éminent

    Avatar de Anomaly
    Homme Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 379
    Billets dans le blog
    1
    Par défaut
    Qu'est-ce que tu cherches à faire ?

    Si tu veux vérifier qu'une telle personne n'existe pas dans ton fichier, alors tu as mal placé ta boucle. Mets tes fonctions de saisies en-dehors de la boucle.

    Si tu veux vérifier qu'il n'y a pas de doublons dans un fichier, alors c'est plus complexe que ça. Tu peux procéder de deux manières :
    a) Soit utiliser deux boucles imbriquées pour comparer chaque élément du fichier avec tout ceux qui le suivent
    b) Soit utiliser un fichier trié, et faire une boucle qui compare chaque élément avec son suivant

    Ensuite, ton code est rempli "d'horreurs" :

    Pas d'arguments ? Il faut mettre "void" : void doublon(void)

    Vu que tu ne cherches qu'à afficher tes printf(), un fflush(stdout) serait plus efficace.

    Surtout ne jamais utiliser gets() !! http://c.developpez.com/faq/c/?page=...EEN_gets_fgets

    Code non standard. Utilise getchar() en boucle ou fgets() pour faire une pause.

  3. #3
    Membre confirmé
    Profil pro
    ingé sys
    Inscrit en
    Avril 2004
    Messages
    156
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : ingé sys

    Informations forums :
    Inscription : Avril 2004
    Messages : 156
    Par défaut
    merci de ta reponse, je vais travaillé ça. Et désolé si mon code est rempli d'horreurs, je suis pas un pro du C

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 186
    Par défaut
    Salut,

    Je vois aussi à rajouter aux erreurs preécédentes celle dans le cas ou tu a un doublon:

    dans ce cas tu vas afficher qu'il y a un doublon puis sortir de ta boucle while et dire qu'il n'y a pas de doublon.

    Perso je mettre l'envoie de doublon/pas doublon dans un if else or de la boucle.

    cordialement.

Discussions similaires

  1. Probleme pour comparer des intervalles
    Par mslider dans le forum Débuter
    Réponses: 6
    Dernier message: 01/04/2009, 11h31
  2. Problem pour comparer deux dates
    Par redabadache3 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 19/11/2007, 09h05
  3. Probleme Pour Comparer Des Dates
    Par Domingo60 dans le forum VBScript
    Réponses: 7
    Dernier message: 25/04/2007, 09h33
  4. [Kylix] probleme pour lancer le shell
    Par miky dans le forum EDI
    Réponses: 5
    Dernier message: 13/08/2002, 09h39
  5. Réponses: 2
    Dernier message: 30/05/2002, 08h54

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