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 :

Problème avec les fichiers


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Problème avec les fichiers
    Bonjour, j'ai un problème avec mon projet sous CB normalement il cherche le pseudo sous lequel on est enregistré et donne le n° de GSM ou FIXE

    Voici le code :

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define TAILLE_MAX 50 //Tableau de 50 pour le n° de telephone

    int main()
    {
    int choix = 0, c = 0;
    long longeurPseudo = 0;
    char nomPersonne[100] = "", numeroTelephone[TAILLE_MAX] = "";

    printf("Sous quel nom votre correspondant est-il enregistre, entrez la saisie en majuscule ? ");
    scanf("%s", nomPersonne);

    longeurPseudo = strlen(nomPersonne);

    printf("1)GSM\n");
    printf("2)FIXE");
    scanf("%d", &choix);

    if(choix == 1)
    {
    FILE* gsm = NULL;
    gsm = fopen("gsm.txt","r");
    if(gsm =! NULL) //Si on a bien ouvert le fichier
    {
    while ((c = fgets(nomPersonne, longeurPseudo, gsm)) != '\n' && c != EOF) /*On lit le pseudo et si c'est pas le bon on saute une ligne*/
    {
    if(strcmp(nomPersonne, c) == 0)/*Si le pseudo est celui que on lit*/
    {
    fseek(gsm, longeurPseudo + 1 , SEEK_CUR); //On se place devant le n° de telephone ( longeur du pseudo +1 pour l'espace )
    fgets(numeroTelephone, TAILLE_MAX, gsm);
    printf("Le numero de telephone de %s est %ld", nomPersonne, numeroTelephone);
    }
    }

    }
    fclose(gsm);
    }

    else if(choix == 2)
    {
    FILE* fixe = NULL;
    fixe = fopen("fixe.txt","r");
    if(fixe =! NULL)
    {
    while ((c = fgets(nomPersonne, longeurPseudo, fixe)) != '\n' && c != EOF) /*On lit le pseudo et si c'est pas le bon on saute une ligne*/
    {
    if(strcmp(nomPersonne, c) == 0)/*Si le pseudo est celui que on lit*/
    {
    fseek(fixe, longeurPseudo + 1 , SEEK_CUR); //On se place devant le n° de telephone ( longeur du pseudo +1 pour l'espace )
    fgets(numeroTelephone, TAILLE_MAX, fixe);
    printf("Le numero de telephone de %s est %ld", nomPersonne, numeroTelephone);
    }
    }
    }
    fclose(fixe);
    }

    else
    {
    printf("Erreur de saisie");
    exit(EXIT_SUCCESS);
    }

    return EXIT_SUCCESS;
    }

  2. #2
    Expert éminent
    Avatar de PRomu@ld
    Homme Profil pro
    Ingénieur de Recherche
    Inscrit en
    Avril 2005
    Messages
    4 155
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Vienne (Poitou Charente)

    Informations professionnelles :
    Activité : Ingénieur de Recherche
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2005
    Messages : 4 155
    Points : 6 486
    Points
    6 486
    Par défaut
    Bonjour, j'ai un problème avec mon projet sous CB normalement il cherche le pseudo sous lequel on est enregistré et donne le n° de GSM ou FIXE

    Déjà d'une :

    Ensuite, peux tu nous dire exactement ce qui ne va pas ? As tu indentifié l'endroit qui ne fonctionne pas ?

  3. #3
    Membre expert
    Avatar de Pragmateek
    Homme Profil pro
    Formateur expert .Net/C#
    Inscrit en
    Mars 2006
    Messages
    2 635
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Formateur expert .Net/C#
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 635
    Points : 3 958
    Points
    3 958
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         printf("Sous quel nom votre correspondant est-il enregistre, entrez la saisie en majuscule ? ");
    Pour ne pas obliger la saisie en majuscule on peut formatter la saisie avec "toupper".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
         scanf("%s", nomPersonne);
    Il faut utiliser "fgets" qui est sûre.
    Pour saisir un caractère "getc" est trés bien.

  4. #4
    Membre éclairé Avatar de crocodilex
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    697
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 697
    Points : 858
    Points
    858
    Par défaut
    Quelques remarques en vrac :
    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
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #define TAILLE_MAX 50 //Tableau de 50 pour le n° de telephone
    
    int main()
    {
        int choix = 0, c = 0;
        long longeurPseudo = 0;
        char nomPersonne[100] = "", numeroTelephone[TAILLE_MAX] = "";
    
        printf("Sous quel nom votre correspondant est-il enregistre, entrez la saisie en majuscule ? ");
        scanf("%s", nomPersonne);
    
        longeurPseudo = strlen(nomPersonne);
    
        printf("1)GSM\n");
        printf("2)FIXE");
        scanf("%d", &choix);
    
        if(choix == 1)
        {
            FILE* gsm = NULL;
            gsm = fopen("gsm.txt","r");
            
            /* if(gsm =! NULL) */  /* Ca c'est une affectation, qui n'as d'ailleurs pas de sens */
            if(gsm != NULL)
            {
                /* Tu voulais utilisais fgetc() peut-etre ? */
                while ((c = fgets(nomPersonne, longeurPseudo, gsm)) != '\n' && c != EOF) /*On lit le pseudo et si c'est pas le bon on saute une ligne*/
                {
                    /* Tu es entrain de comparer une chaine avec un entier !!!!! */
                    if(strcmp(nomPersonne, c) == 0)/*Si le pseudo est celui que on lit*/
                    {
                        fseek(gsm, longeurPseudo + 1 , SEEK_CUR); //On se place devant le n° de telephone ( longeur du pseudo +1 pour l'espace )
                        fgets(numeroTelephone, TAILLE_MAX, gsm);
                        /* Pourquoi %ld ? numeroTelephone est une chaine */
                        printf("Le numero de telephone de %s est %ld", nomPersonne, numeroTelephone);
                    }
                }
    
            }
            /* Tu fermes le fichier meme si l'ouverture echoue !!!! */ 
            fclose(gsm);
        }
        else if(choix == 2)
        {
              [.......]
        }
        else
        {
            printf("Erreur de saisie");
            exit(EXIT_SUCCESS);
        }
    
        return EXIT_SUCCESS;
    }

Discussions similaires

  1. Réponses: 2
    Dernier message: 12/02/2007, 21h12
  2. Problème avec les fichiers .CHM
    Par Safaritn dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 29/11/2006, 13h37
  3. [TexShop/MacOSX] Problème avec les fichiers .eps
    Par rudix dans le forum Editeurs / Outils
    Réponses: 4
    Dernier message: 09/10/2006, 14h07
  4. Problème avec les fichiers en C++
    Par snatch321 dans le forum C++
    Réponses: 7
    Dernier message: 09/05/2006, 19h07
  5. Problème avec les fichiers .JPG
    Par cprogil dans le forum Langage
    Réponses: 5
    Dernier message: 10/06/2003, 15h44

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