begin process at 2012 05 30 16:20:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

Fichier & Disque

 > 

Regrouper les informations d'un fichier c est les afficher


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Regrouper les informations d'un fichier c est les afficher

jeudi 3 juin 2010 à 12:42:34 | Regrouper les informations d'un fichier c est les afficher

amdsources

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 :

dans mon fichier il y a :

100 : 1200
120 : 1000
100 : 200
101 : 300
102 : 400
103 : 1000
101 : 1200

a la fin je vais avoir :

100 : 1200
100 : 200
-----
total:1400

101 : 300
101 : 1200
----
Total: 1500
et ainsi de suite ..

voici mon code :

int main()
{ float tab[792];
struct enrg a;FILE *p;
int i;

for(i=0;i<792;i++)
{
tab[i]=0;
}



p=fopen("journal","a+");
if(p!=NULL)
{

while(fread(&a,sizeof(struct enrg),1,p),!feof(p))
{
tab[a.numero]=tab[a.numero]+a.tot1;
printf("%s %.2f",a.numero,a.tot1);
}
printf("%.2f\n",tab[a.numero]);

}
else printf("erreur d'ouverture ");




fclose(p);
return 0;
jeudi 3 juin 2010 à 13:36:49 | Re : Regrouper les informations d'un fichier c est les afficher

TychoBrahe

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 ;)
Code C/C++ :
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.
jeudi 3 juin 2010 à 13:46:02 | Re : Regrouper les informations d'un fichier c est les afficher

amdsources

Merci d'avoir pris le temps de lire mon message
mais le probleme c'est comment trir les informations retournés far fread().
jeudi 3 juin 2010 à 19:10:52 | Re : Regrouper les informations d'un fichier c est les afficher

TychoBrahe

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.


Cette discussion est classée dans : fichier, numero, informations, tab, regrouper


Répondre à ce message

Sujets en rapport avec ce message

lecture/écriture fichier binaire [ par SesechXP ] Salut !J'ai un programme modulaire à faire en C sous Borland C++ 5 pour un TP dont la fonction principale est donnée et je dois faire les différentes [Fichier Texte] Comment récuperer les informations [ par wallon14 ] Bonjour !Je voudrai savoir comment réaliser un programme qui me permettrai de:- Selectionner le nom d'un fichier- Déterminer le nombre de lignes, de c recherche d'une chaine dans un fichier [ par ymlf ] Problème au niveau du scanf()int recherche(char *chaine,char *FileName){ int i, k; char *tmp, *tab[50], *timer[20]; FILE *svf; svf=fopen(FileName,"r Récuperer des informations dans un fichier [ par nico_inf ] salut,alors voilas je voudrai savoir comment je pourrai faire pour recuperer des informations dans un fichier et les mettre dans une variable CStringp Problème avec quick sort avec des chaines de caractères [ par bakka72 ] Bonjour,Je dois réalisé un quick sort de chaines et jai u souci .1er. je parcourt kle fichier a trié pour compter le nombre délément 2eme je crée un t s o s [ par moujib2005 ] le truc est simple je dois extraire des entiers d'un fichier source: A puis les mettre dans un fichier destination :B de façon que les entiers soient commen afficher les informations que l'on veut d'un fichier texte [ par cobra176 ] excusez moi mais je recherche le moyen de mettre les informations d'un fichier texte dans un tableaux pour ensuite les afficher séparementj'ai un fich Affihcer les informations d'un fichier son [ par Marceleeuuh ] Salut à tous, je réalise un lecteur de musique en c++ sous linux. Je voudrais savoir comment on fait pour afficher les informations de la chanson. Par probleme de fichier texte en C++ [ par sebome ] Bonjour j'ai un fichier texte de ce style la  :            Position de la cibledans espace de contention23/11/2005----------------------------------He transférer un tableau d'entier sous un fichier excel existant [ par sacha83 ] Bonjour à tous,j'ai trouvé des forum sparlant de transfert de données sous excel mais je n'ai rien trouvé d'approprié à mon problème. Je voudrais tran


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,150 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales