Lecture d un gros fichier texte [Résolu]

Amanobuo 65 Messages postés mardi 24 février 2004Date d'inscription 11 décembre 2006 Dernière intervention - 3 févr. 2006 à 14:56 - Dernière réponse : Amanobuo 65 Messages postés mardi 24 février 2004Date d'inscription 11 décembre 2006 Dernière intervention
- 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
cs_Matt67 554 Messages postés samedi 6 septembre 2003Date d'inscription 6 mars 2010 Dernière intervention - 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é 92 internautes ce mois-ci

Commenter la réponse de cs_Matt67
CoyoteVsBeepBeep 41 Messages postés jeudi 16 juin 2005Date d'inscription 3 mars 2006 Dernière intervention - 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
KeniiyK 326 Messages postés vendredi 13 août 2004Date d'inscription 2 novembre 2007 Dernière intervention - 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
Amanobuo 65 Messages postés mardi 24 février 2004Date d'inscription 11 décembre 2006 Dernière intervention - 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
cs_Matt67 554 Messages postés samedi 6 septembre 2003Date d'inscription 6 mars 2010 Dernière intervention - 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
KeniiyK 326 Messages postés vendredi 13 août 2004Date d'inscription 2 novembre 2007 Dernière intervention - 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
cs_Matt67 554 Messages postés samedi 6 septembre 2003Date d'inscription 6 mars 2010 Dernière intervention - 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
Amanobuo 65 Messages postés mardi 24 février 2004Date d'inscription 11 décembre 2006 Dernière intervention - 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.