trier éléments dans un fichier
bonjour à vous,
j'ai besoin d'une petite aide sur une procédure.
je voudrais trier les éléments présents dans un fichier.
> le fichier est en mode texte, chaque ligne contient un enregistrement (une structure)
> la structure:
Code:
1 2 3 4
| typedef struct{
char nom[260], prenom[260];
int taille;
} t_element; |
> le début de la procédure
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| void trier(const char* file) {
FILE *p_fichier = fopen(file,"r");
if (p_fichier == NULL) {printf("Erreur! Le fichier n'existe pas!\n"); return;}
int choix:
printf("Veuillez choisir le critére: \n");
printf("1. Tri croissant par nom.\n");
printf("2. Tri décroissant par nom.\n");
printf("3. Tri croissant par prénom.\n");
printf("4. Tri décroissant par prénom.\n");
printf("5. Tri croissant par taille.\n");
printf("6. Tri décroissant par taille.\n");
scanf("%d", &choix);
return;
} |
J'avais pour idée de récuperer toutes les données du fichier, les mettre dans le tableau, trier ce tableau et réécrire ce tableau trié sur un fichier.
mais je voit pas comment récuperer les données du fichier...dans le tableau
Switch avec une lecture du fichier
Hello
Voila ce que je te propose :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
#define TAILLE_MAX 260 //on définit la taille maximum du tableau
/*au début ne pas oublier les : #include <stdlib.h>
#include <stdio.h>
au début de ton programme !!*/
ordreCroissant(void * pnom);/*le prototype que tu peut maître dans un fichier en tête !!*/
ordreDecroissant(void * prenom);//même chose
void *pnom=&nom;
//ton code avec ton menu
switch (choix)
{
case 1:
pnom
fgets(nom, TAILLE_MAX, file); /*On lit maximum TAILLE_MAX caractères du fichier, on stocke le tout dans le tableau "nom"*/
//ensuite tu n'as qu'a faire une boucle en comptant le nombre de lignes
ordreCroissant(void * pnom);
fclose(file);
case 2:
/*même chose puis tu fait un appel a une fonction qui trie les noms par ordres décroissant que tu nomme par exemple orderDecroissant qui prend en arguments un pointeur sur le tableau nom*/ |
Ensuite tu élabore une fonction pour trier par ordre croissant et décroissant les noms les prénoms.Et comme dans ces fonctions tu seras amené a utiliser des fonctions de chaine de caractére pense a inclure <string.h>
Bonne chance
Bye :king: