Comment trier les données à l'intérieur .les fichiers txt dans C
Je suis nouveau sur C de programmation. Droit maintenant, je suis en train d'écrire un programme dans C qui se lit .les fichiers txt et stocke les données dans un autre fichier txt. Par exemple:
ouvrir 20150101.txt
puis obtenir les données à l'intérieur de
2015010103I
2015010102O
puis le stocker dans 2015JAN.txt
Actuellement, je vais avoir des problèmes pour faire le tri dans le contenu de l' .fichier txt. Pourriez-vous m'aider?
int intCtr;
int intCtr2;
int intCtr3;
char strTempData[MAX_SIZE];
FILE * ptrFileLog;
ptrFileLog = fopen(strFileName, "r");
while(fgets(strTRLog, MAX_SIZE, ptrFileLog) != NULL) {
FILE * ptrSummary;
ptrSummary = fopen(strFileSummary, "a");
for(intCtr = 0; intCtr < MAX_SIZE; intCtr++) {
strcpy(strTempCopy[intCtr], strTRLog);
}
for(int intCtr = 0; intCtr < MAX_SIZE; intCtr++) {
for(int intCtr2 = 6; intCtr2 < 7; intCtr2++) {
if(strcmp(strTempCopy[intCtr -1], strTempCopy[intCtr]) > 0) {
strcpy(strTempData, strTempCopy[intCtr]);
strcpy( strTempCopy[intCtr], strTempCopy[intCtr - 1]);
strcpy(strTempCopy[intCtr -1], strTempData);
}
}
}
for(int intCtr = 0; intCtr < 1; intCtr++) {
fputs(strTempCopy[intCtr], ptrSummary);
}
}
fclose(ptrFileLog);
fclose(ptrSummary);
- Le contenu de la .txt fichiers ne sont pas seulement les valeurs int, exactement?
- À la fin il y a des lettres, de sorte que les contenus sont stockés sous forme de chaînes.
- Je pense que vous pouvez publier votre travail, ce que vous avez fait jusqu'à maintenant.. et nous pouvons nous améliorer et de vous aider..
- J'ai édité maintenant.
- Pourriez-vous préciser les problèmes que vous rencontrez?
Vous devez vous connecter pour publier un commentaire.
Pour résoudre ce problème, je vous recommande de lire ligne par ligne et de les stocker dans une liste de chaînes. et de tri de la liste à l'aide de toutes les algorithmes de tri( exemple ici: tri à bulles). et imprimer le résultat dans un nouveau fichier.
ne pas ouvrir un fichier à l'intérieur de la boucle while n'est pas une bonne idée. Dans certains senarious vous risquez de perdre le gestionnaire du fichier ouvert.
Tout d'abord, vous devriez revérifier le flux de votre code. Par exemple, vous êtes à l'ouverture
strFileSummary
plusieurs fois (à l'intérieur dewhile
boucle) et de fermeture qu'une seule fois à la fin. L'utilisation de certainsfor
boucles sont au moins intrigante.Aussi, Il n'est pas clair pour moi exactement quel type d'algorithme de tri que vous essayez de mettre en œuvre là.
Ma recommandation est de ne pas réinventer la roue et utiliser stdlib de
qsort
fonction.Vous ne devriez avoir à coder une fonction de comparaison. Voir un exemple ici: À l'aide de stdlib de qsort() pour trier un tableau de chaînes de caractères