Lecture d un gros fichier texte [Résolu]

Messages postés
65
Date d'inscription
mardi 24 février 2004
Dernière intervention
11 décembre 2006
- 3 févr. 2006 à 14:56 - Dernière réponse :
Messages postés
65
Date d'inscription
mardi 24 février 2004
Dernière intervention
11 décembre 2006
- 6 févr. 2006 à 21:43
Salut !
J aimerai savoir quoi utiliser pour ouvrir un "gros" fichier texte (environ 5ko)
avec fread, ca passe pas, ou j ai mal passe mes parametres... ?

Sinon, savez vous comment ouvir un fichier texte d'une lettre ou un mot definie a un autre mot ou lettre definie (ex : de '@' à ';').
Afficher la suite 

Votre réponse

8 réponses

Meilleure réponse
Messages postés
554
Date d'inscription
samedi 6 septembre 2003
Dernière intervention
6 mars 2010
- 4 févr. 2006 à 10:39
3
Merci
Bonjour,

D'accord pour ta methode Kenilyk mais pour le malloc je ferais :

char * buffer = (char*)malloc(sizefile + 1);

memset(buffer, 0, sizefile + 1);
ou
buffer[sizefile] = '\0'; /* apres la lecture */

car c'est un fichier texte et donc je pense qu'il va s'en servir comme tel...

Matt...

Merci cs_Matt67 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 90 internautes ce mois-ci

Commenter la réponse de cs_Matt67
Messages postés
41
Date d'inscription
jeudi 16 juin 2005
Dernière intervention
3 mars 2006
- 3 févr. 2006 à 16:37
0
Merci
methode bourin si tu cherche pas les perfs :

FILE *file;
char c;
char buffer[5*1024]; //allocation en fonction de la taille de fichier (malloc)
UINT i=0;

m_text="";
m_hexa="";


file=fopen(m_file_path,"rb"); //read only


if(file==NULL)
{
return FALSE;
}


while(fscanf(file,"%c",&c)!=EOF)
{
buffer[i]=c,
i++;
}

fclose(file);

sinon t'as quoi pour fread ?

size_t fread( void *buffer, size_t size, size_t count, FILE *stream );
tu a mis la bonne valeur dans size et count ?
Commenter la réponse de CoyoteVsBeepBeep
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Dernière intervention
2 novembre 2007
- 3 févr. 2006 à 20:28
0
Merci
5Ko un gros fichier ????, enfin... :

// ouvre le fichier
FILE *file=fopen("fichier.txt","rb");
// deplace le curseur a la fin
fseek(file,0,SEEK_END);
// taille du fichier
long sizeFile=ftell(file);
// on se repositionne au debut
fseek(file,0,SEEK_SET);
// allocation
char * buffer=(char*)malloc(sizeFile);
// lecture
fread(buffer,1,sizeFile,file);
// ferme le fichier
fclose(file);

KeniiyK
Commenter la réponse de KeniiyK
Messages postés
65
Date d'inscription
mardi 24 février 2004
Dernière intervention
11 décembre 2006
- 4 févr. 2006 à 19:36
0
Merci
ok, merci pour ces info !
cela marche tres bien,
cependant, quand je declare un char * buffer = (char*)malloc(sizefile + 1); dans ma fonction main, comment y acceder dans toutes mes autres fonctions (je ne peut pas declarer buffer en global, puisque il faut passer par main ou une autre fonction pour determiner sa taille).

Merci d avance :)
Commenter la réponse de Amanobuo
Messages postés
554
Date d'inscription
samedi 6 septembre 2003
Dernière intervention
6 mars 2010
- 5 févr. 2006 à 17:58
0
Merci
Bonsoir,

Tu passes ton buffer dans l'appel de tes fonctions.N'oublie pas de liberer buffer quand tu ne t'en sers plus.

Matt...
Commenter la réponse de cs_Matt67
Messages postés
326
Date d'inscription
vendredi 13 août 2004
Dernière intervention
2 novembre 2007
- 6 févr. 2006 à 09:40
0
Merci
Je ne suis pas du tout d'accord avec le '\0' en fin de buffer pour 2 raisons :
- on connait la taille donc pas besoin d'info en plus.
- imagine qu'il y ai déjà un '\0' dans le buffer par exemple dans un fichier binaire, ton '\0' ne sert plus a rien.

KeniiyK
Commenter la réponse de KeniiyK
Messages postés
554
Date d'inscription
samedi 6 septembre 2003
Dernière intervention
6 mars 2010
- 6 févr. 2006 à 19:40
0
Merci
bonsoir,

Ce n'est pas un fichier binaire, mais un fichier texte apparement... (et je l'ai précisé)

Matt...
Commenter la réponse de cs_Matt67
Messages postés
65
Date d'inscription
mardi 24 février 2004
Dernière intervention
11 décembre 2006
- 6 févr. 2006 à 21:43
0
Merci
re

C'est un fichier texte en effet.
Merci a vous tous pour ces info qui se completes bien ! j ai pu terminer cette partie de mon programme (en attendant de l optimiser, c'est deja un grand pas)

PS : 5Ko c'est pas mal pour un fichier texte (en nombre de caracteres), et le \0 fonctionne.

++
Commenter la réponse de Amanobuo

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.