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 :

recherche dans une structure


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 8
    Par défaut recherche dans une structure
    bonsoir, je suis un debutant en C et j'ai un programme et j'essaye tant bien que mal de faire un prog pour l'ecole et j'ai beosin d'aide pour un de mes sous programme et pour me dire si ce que j'ai codé est bon pour l'instant car malheureusement je ne peut coder qu'a l'ecole car sur mon PC et j'ai vista eet j'attend qu'un de mes camarades me fournissent un logiciel pour code

    Voici 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
    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
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
     
    // declaration des librairies
     
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
     
     
    // Définie les pointeurs de fichier
    FILE *fichier_demandeur;
    FILE *fichier_historique;
     
    // definie les numeros des entres de commande
     
    # define NUM_FICHIER_DEMANDEUR 1
    # define NUM_FICHIER_HISTORIQUE 2
    # define LONGUEUR_LIGNE 255
     
     
     
    typedef struct demandeur
    {
    	char identifiant [50];
            char prenom [50];
            char nom [50];
            char date_de_naissance [50];
            char adresse [50];
            char ville [50];
            char chomeur;
     
    } demandeur;
     
     
     
    // sous programme permettant de visusalliser les données données d'un utilisateur
     
    int view()
    {
    	// declaration des variables
    	char rechercher_nom;
     
    	printf("Tapez quelques lettres pour rechercher un demandeur\n");
    	scanf("%s",recherche_nom);
     
    //mon probleme se trouve a se niveau je n'ai aucune idée pour afficher seulement les identifiants
    // ki commance par rercher_nom et je ne sais meme pas si cette commande d'affichage est valable
    	printf(demandeur.identifiant,demandeur.nom,demandeur.prenom)
     
    }
     
     
    //prog principale
     
    int main( int argc, char *argv[])
     
    {
     
     
            // declaration des variables
     
            int erreur_commande=0;
            char choix;
    	char *tmp;
    	char ligne[LONGUEUR_LIGNE];
     
            // Debut des verification
     
            // Verification du bon nombre de mot en entree
     
            if ( argc < NUM_FICHIER_HISTORIQUE )
            {
                    erreur_commande++;
            }
     
            if ( argc > NUM_FICHIER_HISTORIQUE +1 )
            {
                    erreur_commande++;
            }
     
            // Ouverture des fichiers ssi pas d'erreur de commande
     
            if ( !erreur_commande )
     
            {
     
                    // Ouverture du fichier demandeur
     
                    fichier_demandeur = fopen ( argv[NUM_FICHIER_DEMANDEUR], "r");
     
                    if( fichier_demandeur == NULL )
                    {
                            erreur_commande++;
                    }
     
     
    		else
    		{
     
    			// stockage des données dans la structure
     
    			while (fgets(ligne,sizeof ligne, fichier_demandeur)
     
     
    			// copie de lidentifiant du fichier source dans demandeur.idenfiant
    			tmp = strtok(ligne,';');
    			strcpy(demandeur.identifiant,donne);
     
    			//copie du nom dans demandeur.nom
    			tmp = strtok(NULL,';');
    			strcpy(demandeur.nom,donne);
     
    			//copie du prenom dans demandeur.prenom
    			tmp = strtok(NULL,';');
    			strcpy(demandeur.prenom,donne);
     
    			//copie de la date de naissance dans demandeur.date_de_naissance
    			tmp = strtok(NULL,';');
    			strcpy(demandeur.date_de_naissance,donne);
     
    			//copie de l'addresse dans demandeur.adresse
    			tmp = strtok(NULL,';');
    			strcpy(demandeur.adresse,donne);
     
    			//copie de la ville dans demandeur.ville
    			tmp = strtok(NULL,';');
    			strcpy(demandeur.ville,donne);
     
    			//copie de du statut dans demandeur.chomeur
    			tmp = strtok(NULL,';');
    			strcpy(demandeur.chomeur,donne);
     
     
     
    			//Ouverture du fichier historique
     
                    	fichier_historique = fopen ( argv[NUM_FICHIER_HISTORIQUE], "r")
     
     
                    	if( fichier_historique == NULL )
                   		{
                            	erreur_commande++;
                    	}
     
                    	printf("VIEW   : v ou V --> Consulter les informations\n");
                    	printf("UPDATE : u ou U --> Mettre ` jour les informations d'un demandeur\n");
                    	printf("DELETE : d ou D --> Supprimer un demandeur\n");
                    	printf("ADD    : a ou A --> Ajouter un demandeur\n");
                    	printf("SHOW   : s ou S --> Montrer la reprisentation de l'arbre binaire\n");
     
                    	printf("Commande:");
                    	choix=getchar();
     
                   		choix=tolower(choix);
     
                    	switch(choix)
                    	{
                            	case 'v' :
                            	case 'V' :
     
    // je ne sais pas quoi echange comme variable avec mon sous programme
                                            	view();
                                            	break;
                            	case 'u' :
                            	case 'U' :
                                            	printf("cool-2\n");
                                            	break;
                            	case 'd' :
                            	case 'D' :
                                            	printf("cool-3\n");
                                            	break;
                            	case 'a' :
                            	case 'A' :
                                            	printf("cool-4\n");
                                            	break;
                            	case 's' :
                            	case 'S' :
                                            	printf("cool-5\n");
                                            	break;
                            	default :
                                            	printf("ERREUR Commande invalide\n");
                                            	break;
                    	}
    		}
     
     
            }
     
    }

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par coco.cohen Voir le message
    bonsoir, je suis un debutant en C et j'ai un programme et j'essaye tant bien que mal de faire un prog pour l'ecole et j'ai beosin d'aide pour un de mes sous programme et pour me dire si ce que j'ai codé est bon pour l'instant car malheureusement je ne peut coder qu'a l'ecole car sur mon PC et j'ai vista eet j'attend qu'un de mes camarades me fournissent un logiciel pour code

    Voici 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
    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
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    185
    186
    187
    188
     
    // declaration des librairies
     
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
     
     
    // Définie les pointeurs de fichier
    FILE *fichier_demandeur;
    FILE *fichier_historique;
     
    // definie les numeros des entres de commande
     
    # define NUM_FICHIER_DEMANDEUR 1
    # define NUM_FICHIER_HISTORIQUE 2
    # define LONGUEUR_LIGNE 255
     
     
     
    typedef struct demandeur
    {
    	char identifiant [50];
            char prenom [50];
            char nom [50];
            char date_de_naissance [50];
            char adresse [50];
            char ville [50];
            char chomeur;
     
    } demandeur;
     
     
     
    // sous programme permettant de visusalliser les données données d'un utilisateur
     
    int view()
    {
    	// declaration des variables
    	char rechercher_nom;
     
    	printf("Tapez quelques lettres pour rechercher un demandeur\n");
    	scanf("%s",recherche_nom);
     
    //mon probleme se trouve a se niveau je n'ai aucune idée pour afficher seulement les identifiants
    // ki commance par rercher_nom et je ne sais meme pas si cette commande d'affichage est valable
    	printf(demandeur.identifiant,demandeur.nom,demandeur.prenom)
     
    }
     
     
    //prog principale
     
    int main( int argc, char *argv[])
     
    {
     
     
            // declaration des variables
     
            int erreur_commande=0;
            char choix;
    	char *tmp;
    	char ligne[LONGUEUR_LIGNE];
     
            // Debut des verification
     
            // Verification du bon nombre de mot en entree
     
            if ( argc < NUM_FICHIER_HISTORIQUE )
            {
                    erreur_commande++;
            }
     
            if ( argc > NUM_FICHIER_HISTORIQUE +1 )
            {
                    erreur_commande++;
            }
     
            // Ouverture des fichiers ssi pas d'erreur de commande
     
            if ( !erreur_commande )
     
            {
     
                    // Ouverture du fichier demandeur
     
                    fichier_demandeur = fopen ( argv[NUM_FICHIER_DEMANDEUR], "r");
     
                    if( fichier_demandeur == NULL )
                    {
                            erreur_commande++;
                    }
     
     
    		else
    		{
     
    			// stockage des données dans la structure
     
    			while (fgets(ligne,sizeof ligne, fichier_demandeur)
     
     
    			// copie de lidentifiant du fichier source dans demandeur.idenfiant
    			tmp = strtok(ligne,';');
    			strcpy(demandeur.identifiant,donne);
     
    			//copie du nom dans demandeur.nom
    			tmp = strtok(NULL,';');
    			strcpy(demandeur.nom,donne);
     
    			//copie du prenom dans demandeur.prenom
    			tmp = strtok(NULL,';');
    			strcpy(demandeur.prenom,donne);
     
    			//copie de la date de naissance dans demandeur.date_de_naissance
    			tmp = strtok(NULL,';');
    			strcpy(demandeur.date_de_naissance,donne);
     
    			//copie de l'addresse dans demandeur.adresse
    			tmp = strtok(NULL,';');
    			strcpy(demandeur.adresse,donne);
     
    			//copie de la ville dans demandeur.ville
    			tmp = strtok(NULL,';');
    			strcpy(demandeur.ville,donne);
     
    			//copie de du statut dans demandeur.chomeur
    			tmp = strtok(NULL,';');
    			strcpy(demandeur.chomeur,donne);
     
     
     
    			//Ouverture du fichier historique
     
                    	fichier_historique = fopen ( argv[NUM_FICHIER_HISTORIQUE], "r")
     
     
                    	if( fichier_historique == NULL )
                   		{
                            	erreur_commande++;
                    	}
     
                    	printf("VIEW   : v ou V --> Consulter les informations\n");
                    	printf("UPDATE : u ou U --> Mettre ` jour les informations d'un demandeur\n");
                    	printf("DELETE : d ou D --> Supprimer un demandeur\n");
                    	printf("ADD    : a ou A --> Ajouter un demandeur\n");
                    	printf("SHOW   : s ou S --> Montrer la reprisentation de l'arbre binaire\n");
     
                    	printf("Commande:");
                    	choix=getchar();
     
                   		choix=tolower(choix);
     
                    	switch(choix)
                    	{
                            	case 'v' :
                            	case 'V' :
     
    // je ne sais pas quoi echange comme variable avec mon sous programme
                                            	view();
                                            	break;
                            	case 'u' :
                            	case 'U' :
                                            	printf("cool-2\n");
                                            	break;
                            	case 'd' :
                            	case 'D' :
                                            	printf("cool-3\n");
                                            	break;
                            	case 'a' :
                            	case 'A' :
                                            	printf("cool-4\n");
                                            	break;
                            	case 's' :
                            	case 'S' :
                                            	printf("cool-5\n");
                                            	break;
                            	default :
                                            	printf("ERREUR Commande invalide\n");
                                            	break;
                    	}
    		}
     
     
            }
     
    }
    Tu as fait l'erreur de confondre "type" et "variable". Ici, "demandeur" identifie un type. Il te faut maintenant une variable de ce type pour pouvoir y stocker tes données. Et comme tu dois stocker "n" données il te faut un tableau de ce type. Entre nous, si tu nommais ton type "demandeur_t" tu ferais moins la confusion et tu pourrais créer ton tableau "demandeur_t demandeur[100]".

    Ensuite tu remplis ce tableau "demandeur". Puis il te faut le passer à ta fonction "view()" (qui n'est pas un sous-programme mais une fonction). Et comme tu veux lui passer un tableau ben tu peux n'y passer que son adresse
    Exemple
    Maintenant ta fonction reçoit l'adresse d'un tableau et pourra donc le balayer pour comparer chaque élément avec l'élément à chercher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    view(demandeur_t demandeur[])
    {
        ...
    }
    Ensuite faudra faire évoluer. Par exemple la valeur "100" induit une limite pas forcément réaliste. Un pas en avant sera d'avoir un tableau dynamique qui s'agrandira au fur et à mesure qu'il doit ingérer des données...

    Si tu veux un compilo va donc voir du coté de code::blocks. C'est un outil de développement gratuit assez performant et je "pense" qu'il "devrait" être compatible Vista...
    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. Recherche de max dans une structure
    Par thecrazydonut dans le forum MATLAB
    Réponses: 2
    Dernier message: 09/04/2014, 17h30
  2. Recherche de noeuds dans une structure filamentaire
    Par adriangarello dans le forum Traitement d'images
    Réponses: 9
    Dernier message: 28/04/2008, 14h23
  3. Recherche dans une Structure d'éléments semblables
    Par bernard6 dans le forum MATLAB
    Réponses: 1
    Dernier message: 27/07/2007, 14h28
  4. Recherche dans une structure XML::Simple
    Par nicolargo dans le forum Modules
    Réponses: 1
    Dernier message: 04/09/2006, 19h17
  5. Recherche d'un mot dans une structure
    Par Remedy dans le forum C
    Réponses: 28
    Dernier message: 25/05/2006, 23h37

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