Regrouper les informations d'un fichier c est les afficher
amdsources
Messages postés6Date d'inscriptionmercredi 27 janvier 2010StatutMembreDernière intervention10 août 2010
-
3 juin 2010 à 12:42
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 2013
-
3 juin 2010 à 19:10
BONJOUR,
Je suis en train de creer un programme qui permet de lire les informations dans un fichier
les regrouper et aditionner la somme exemple :
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 3 juin 2010 à 13:36
Salut,
float tab[792];
Dans ton exemple il n'y a que des nombres entiers. Si c'est toujours le cas, tu ne devrais pas utiliser le type float mais le type int (et même unsigned int s'ils sont toujours positifs).
for(i=0;i<792;i++)
{
tab[i]=0;
}
La fonction bzero() est ton amie ;)
bzero(tab, sizeof(tab));
else printf("erreur d'ouverture ");
Tu ne devrai pas écrire sur la sortie standard mais sur la sortie d'erreur standard. Enfin ce n'est plus un problème si tu utilises la fonction perror() qui affichera un message précis sur la bonne sortie.
p=fopen("journal","a+");
Si tu n'as pas besoin d'écrire dans le fichier (juste de lire comme c'est le cas dans ce que tu as montré), alors le mode "r" est suffisant (sauf sur windows où devrait être utile d'utiliser le mode "b" en plus).
while(fread(&a,sizeof(struct enrg),1,p),!feof(p))
Attention, tu ne vérifie pas si la lecture s'est déroulée sans erreurs. A noter qu'il me semble qu'il n'y a pas de moyen pour savoir si fread à effectivement lu le bon nombre d'octets dans le fichier (retourne 0 si la lecture est partielle sans positionner errno ni ne pointeur d'erreur du buffer, donc pas de perror ni de ferror). C'est dommage, un fichier corrompu risque de passer sans soucis.
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 3 juin 2010 à 19:10
mais le probleme c'est comment trir les informations retournés far fread().
ha trier les infos, il suffisais de le dire dès le début :)
Et bien tu vas devoir retenir toutes les informations, par exemple à l'aide d'une liste chaînée, pour ensuite les trier. Enfin à mon avis vu que tu utilises visiblement des données binaires le mieux serait de mapper le fichier en mémoire (en C sous windows je ne sais pas comment faire vu que windows ne connais pas mmap()...), mais ceci va t'obliger à revoir intégralement ta manière de faire. A toi de faire ta fonction de tri perso (il existe de très nombreux algorithmes de tri) ou d'utiliser une librairie qui implémente déjà ça.