1. Tu commences par réaliser un petit gestionnaire de paramètres d'entrée pour analyser ce que souhaite faire l'utilisateur.
main( int argc , char **argv ) où argc = Nombre d'arguments, argv = liste des arguments
2. Pour le premier choix, si j'ai bien compris, il faut trier le fichier selon une des colonnes. Un algorithme simple mais bestial, admissible pour des fichiers pas trop long, serait de :
i. Lire les enregistrements du fichier d'entrée ligne par ligne en mémorisant la ligne lue si elle est plus grande selon le critère de tri que celle mémorisée. Après avoir balayétout le fichier, la ligne mémorisée sera donc celle en tête de liste, à écrire dans le fichier de sortie. Il suffit alors de rebalayer le fichier d'entrée pour avoir la ligne suivante, à ajouter au fichier de sortie, et ainsi de suite jusqu'à avoir transféré toutes las lignes. L'inconvénient est qu'il faut relire N fois le fichier d'entrée, N étant le nombre de lignes de ce fichier. Méthode devient vite longue si fichier long !
ii. Le + simple est de créer une structure qui mappe une ligne, comme :
typedef struct {
char code[3];
char designation[20];
char prix[7];
char stock[5];
char fournisseur[10];
} tEnregistrement;
Tu peux alors créer un tableau de structures tEnregistrement et y transférer les données du fichier d'entrée :
tEnregistrement Enr[100]; en supposant que tu n'aies pas plus de 100 enregistrements. Si ce nombre est inconnu, alors il faut faire une allocation dynamique de mémoire (malloc() puis des realloc())
Une fois que tu as tranféré le fichier d'entrée dans le tableau Enr[], il ne te suffit plus que de faire un petit tri bulle su le tableau, puis de vider le tableau dans le fichier de sortie. Simple et rapide car tu travailles en mémoire.
Pour ta gouverne, le tri bulle : Tu balaye le tableau, et à chaque ligne tu la compares avec la suivante, si elles sont dans le bon ordre, ok, sinon tu echange leur contenu. Tu rebalaye alors le tableau jusqu'à ce qu'il n'y ait plus de permutation.
Je ne veux pas t'écrire le programme car cela ne t'apprendrai rien, mais si tu veux des conseils, poses moi des questions ou envoie moi ton code et je t'aiderai bien volontiers.
@++
tatou_38
Angers