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 :

Quel est le problème ici ? Rechercher Dans un fichier !


Sujet :

C

  1. #1
    Nouveau Candidat au Club Avatar de Tawrii
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Quel est le problème ici ? Rechercher Dans un fichier !
    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
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
     #include <stdio.h>
    #include <string.h>
    typedef struct{
        int jour;
        int mois;
        int annee;
    }Date;
    typedef struct{
        int numins;
        char prenom[30];
        char nom[30];
        Date datnaiss;
        float note[2];
        float moy;
    }Stagaire;
    Stagaire stg[30];
    int n=0;
     
    // MENU
     
    int menu(){
        int number;
        printf("++++++++++++++++++++++++++++ Gestion des Stagaires +++++++++++++++++++++++++++++\n");
        printf("++++++++++++++++++++++++++++++++++++ MENU ++++++++++++++++++++++++++++++++++++++\n");
        printf("+++++++ 1----------------------------------- Ajouter un stagaire           +++++\n");
        printf("+++++++ 2---------------------------------- Modifier un stagaire           +++++\n");
        printf("+++++++ 3----------------------------------Supprimer un stagaire           +++++\n");
        printf("+++++++ 4-------------------------------- Rechercher un stagaire           +++++\n");
        printf("+++++++ 5------------------------------------ Rechercher par nom           +++++\n");
        printf("+++++++ 6--------------------------- Afficher tous les stagaires           +++++\n");
        printf("+++++++ 7---Afficher les stagaires admis <avec leur pourcentage>           +++++\n");
        printf("+++++++ 8---Afficher les stagaires non admis <avec leur pourcentage>       +++++\n");
        printf("+++++++ 9----------------------------------------------- Quitter           +++++\n");
        printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
        printf("Saisissez votre choix:\t");
        scanf("%d",&number);
        return number;
    }
     
    // Ajouter un neveaux stagaire
     
    void ajouter(){
        int i,s=0;
        FILE *p = fopen("Logs.data","a");
        if (p != NULL){
            printf("Donner le num%cro d'inscription:\t\t\t",130);
            scanf("%d",&stg[n].numins);
            printf("Donner le prenom:\t\t\t\t");
            scanf("%s",stg[n].prenom);
            printf("Donner le nom:\t\t\t\t\t");
            scanf("%s",stg[n].nom);
            printf("Donner la date de naissance [jj mm aaaa]:\t");
            scanf("%d%d%d",&stg[n].datnaiss.jour,&stg[n].datnaiss.mois,&stg[n].datnaiss.annee);
            for (i=0;i<3;i++){
                printf("Donner la [%d] note:\t",i+1);
                scanf("%f",&stg[n].note[i]);
                s+=stg[n].note[i];
            }
            stg[n].moy = (float) s/3;
            fprintf(p,"Numéro d'inscription: %d | prénom: %s | nom: %s | date naissance: %d/%d/%d | moyenne: %.2f\n",stg[n].numins,stg[n].prenom,stg[n].nom,stg[n].datnaiss.jour,stg[n].datnaiss.mois,stg[n].datnaiss.annee,stg[n].moy);
            printf("\n| Num%cro d'inscription: %d \n| pr%cnom:           %s \n| nom:              %s \n| date naissance:   %d/%d/%d \n| moyenne:           %.2f\n\n",130,stg[n].numins,130,stg[n].prenom,stg[n].nom,stg[n].datnaiss.jour,stg[n].datnaiss.mois,stg[n].datnaiss.annee,stg[n].moy);
            getchar();
            n++;
        }
        else
            printf("erreur tant que ouvrire le Fichier\n");
        fclose(p);
    }
     
    // Rechercher un stagaire avec numéro d'inscription
     
    int rechercherins(int inscription){
        int numbre,i;
        char str[7],str1[15];
        FILE* p = fopen("Logs.data", "r");
        for (i=0;i<n;i++){
            fscanf(p, "%s %s %d",str,str1,&numbre);
            if (numbre == inscription)
                return 1;
            else
                return -1;
        }
            fclose(p);
    }
     
     
     
    // Programme Principale
     
    int main(){
        int me,p,nombre,nins;
        do {
        me = menu();
        system("cls");
        switch (me){
        case 1:
            ajouter();
            break;
        case 2:
            break;
        case 3:
            break;
        case 4:
            printf("Donner le num d'insciption :\t ");
            scanf("%d",&nins);
            printf("\n %d\n\n",rechercherins(nins));
            break;
        case 5:
            break;
        case 6:
            break;
        case 7:
            break;
        case 8:
            break;
        case 9:
            printf("\nbaye baye Nous esp%crons vous voir une autre fois\n",130);
            system("pause");
            break;
        default:
            printf("O%cps entrez une valeur correct:\n",147);
        }
        }while (me != 9);
    }
    Quel est le problème dans la fonction Rechercherins il continue à me donner 0 quand je l'imprime en printf ! ... ???
    Désolé pour mon français

  2. #2
    Nouveau Candidat au Club Avatar de Tawrii
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 26
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    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
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
     #include <stdio.h>
    #include <string.h>
    typedef struct{
        int jour;
        int mois;
        int annee;
    }Date;
    typedef struct{
        int numins;
        char prenom[30];
        char nom[30];
        Date datnaiss;
        float note[2];
        float moy;
    }Stagaire;
    Stagaire stg[30];
    int n=0;
     
    // MENU
     
    int menu(){
        int number;
        printf("++++++++++++++++++++++++++++ Gestion des Stagaires +++++++++++++++++++++++++++++\n");
        printf("++++++++++++++++++++++++++++++++++++ MENU ++++++++++++++++++++++++++++++++++++++\n");
        printf("+++++++ 1----------------------------------- Ajouter un stagaire           +++++\n");
        printf("+++++++ 2---------------------------------- Modifier un stagaire           +++++\n");
        printf("+++++++ 3----------------------------------Supprimer un stagaire           +++++\n");
        printf("+++++++ 4-------------------------------- Rechercher un stagaire           +++++\n");
        printf("+++++++ 5------------------------------------ Rechercher par nom           +++++\n");
        printf("+++++++ 6--------------------------- Afficher tous les stagaires           +++++\n");
        printf("+++++++ 7---Afficher les stagaires admis <avec leur pourcentage>           +++++\n");
        printf("+++++++ 8---Afficher les stagaires non admis <avec leur pourcentage>       +++++\n");
        printf("+++++++ 9----------------------------------------------- Quitter           +++++\n");
        printf("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n");
        printf("Saisissez votre choix:\t");
        scanf("%d",&number);
        return number;
    }
     
    // Ajouter un neveaux stagaire
     
    void ajouter(){
        int i,s=0;
        FILE *p = fopen("Logs.data","a");
        if (p != NULL){
            printf("Donner le num%cro d'inscription:\t\t\t",130);
            scanf("%d",&stg[n].numins);
            printf("Donner le prenom:\t\t\t\t");
            scanf("%s",stg[n].prenom);
            printf("Donner le nom:\t\t\t\t\t");
            scanf("%s",stg[n].nom);
            printf("Donner la date de naissance [jj mm aaaa]:\t");
            scanf("%d%d%d",&stg[n].datnaiss.jour,&stg[n].datnaiss.mois,&stg[n].datnaiss.annee);
            for (i=0;i<3;i++){
                printf("Donner la [%d] note:\t",i+1);
                scanf("%f",&stg[n].note[i]);
                s+=stg[n].note[i];
            }
            stg[n].moy = (float) s/3;
            fprintf(p,"Numéro d'inscription: %d | prénom: %s | nom: %s | date naissance: %d/%d/%d | moyenne: %.2f\n",stg[n].numins,stg[n].prenom,stg[n].nom,stg[n].datnaiss.jour,stg[n].datnaiss.mois,stg[n].datnaiss.annee,stg[n].moy);
            printf("\n| Num%cro d'inscription: %d \n| pr%cnom:           %s \n| nom:              %s \n| date naissance:   %d/%d/%d \n| moyenne:           %.2f\n\n",130,stg[n].numins,130,stg[n].prenom,stg[n].nom,stg[n].datnaiss.jour,stg[n].datnaiss.mois,stg[n].datnaiss.annee,stg[n].moy);
            getchar();
            n++;
        }
        else
            printf("erreur tant que ouvrire le Fichier\n");
        fclose(p);
    }
     
    // Rechercher un stagaire avec numéro d'inscription
     
    int rechercherins(int inscription){
        int numbre,i;
        char str[7],str1[15];
        FILE* p = fopen("Logs.data", "r");
        while (!feof(p)){
            fscanf(p, "%s %s %d",str,str1,&numbre);
            if (numbre == inscription)
                return 1;
            else
                return -1;
        }
            fclose(p);
    }
     
     
     
    // Programme Principale
     
    int main(){
        int me,p,nombre,nins;
        do {
        me = menu();
        system("cls");
        switch (me){
        case 1:
            ajouter();
            break;
        case 2:
            break;
        case 3:
            break;
        case 4:
            printf("Donner le num d'insciption :\t ");
            scanf("%d",&nins);
            printf("\n %d\n\n",rechercherins(nins));
            break;
        case 5:
            break;
        case 6:
            break;
        case 7:
            break;
        case 8:
            break;
        case 9:
            printf("\nbaye baye Nous esp%crons vous voir une autre fois\n",130);
            system("pause");
            break;
        default:
            printf("O%cps entrez une valeur correct:\n",147);
        }
        }while (me != 9);
    }

  3. #3
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    Salut mon gars ! Pas clair en effet ton problème :
    j'ai beau regarder ta fonction Rechercherins(int) ,je ne vois pas de printf() ?

  4. #4
    Membre averti
    Avatar de exe2bin
    Profil pro
    Passionné de programmation
    Inscrit en
    Mars 2009
    Messages
    537
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Passionné de programmation

    Informations forums :
    Inscription : Mars 2009
    Messages : 537
    Points : 387
    Points
    387
    Billets dans le blog
    3
    Par défaut
    Tu n'as pas donné la fonction d'écriture de ton fichier ,
    comment veux tu que l'on sache si c'est bien enregistré ?

  5. #5
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Tawrii Voir le message
    Code c : 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
    int n=0;
    // Rechercher un stagaire avec numéro d'inscription
    int rechercherins(int inscription){
        int numbre,i;
        char str[7],str1[15];
        FILE* p = fopen("Logs.data", "r");
        for (i=0;i<n;i++){
            fscanf(p, "%s %s %d",str,str1,&numbre);
            if (numbre == inscription)
                return 1;
            else
                return -1;
        }
            fclose(p);
    }
    
    void ajouter(){
        int i,s=0;
        FILE *p = fopen("Logs.data","a");
        if (p != NULL){
            ...
        }
        else
            printf("erreur tant que ouvrire le Fichier\n");
        fclose(p);  // Et donc on le ferme même s'il n'a pas été ouvert !!!
    }
    Quel est le problème dans la fonction Rechercherins il continue à me donner 0 quand je l'imprime en printf ! ... ???
    Bonjour

    Si n vaut 0 alors la boucle ne se fait pas et donc tu quittes ta fonction sans retourner de valeur => il est alors probable que ça retourne 0 par défaut.

    Maintenant que la cause est expliquée, plusieurs remarques
    • on n'utilise pas de globales ; ou si ça doit se faire, on leur met des noms plus parlants que "n" et on le fait pour des raisons plus importantes que stocker le nombre de lignes du fichier
    • on évite de faire un fclose() dans le cas où le fichier n'a pas pu être ouvert (voir ma remarque en rouge)
    • quand on cherche un élément dans un fichier, il faut lire tout le fichier pour savoir si l'élément y est ou pas et donc ne pas sortir à la première occurence
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Quel est le problème dans cette ligne ?
    Par alaa1993 dans le forum Android
    Réponses: 7
    Dernier message: 31/01/2014, 12h54
  2. [XL-2007] une formule dans une macro ne fonctionne pas je ne sais pas quel est le problème
    Par skipeemed dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 24/11/2010, 12h59
  3. [MySQL] probléme de recherche dans un fichier
    Par ramijrad dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 09/08/2010, 16h22
  4. Problème de recherche dans un fichier
    Par nash85 dans le forum C++
    Réponses: 3
    Dernier message: 08/12/2007, 19h29
  5. Quel est le problème dans ce code ?
    Par Luther13 dans le forum C
    Réponses: 12
    Dernier message: 26/08/2003, 16h09

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