programmation C lecture ou stockage de fichier ?

programmation C lecture ou stockage de fichier ? - Programmation

Marsh Posté le 25-03-2001 à 22:29:37    

voila j ai une application ki lit un fichier de conf .
 
je programme cette application en C.
 
le seul pb c est ke des fois ce fichiers de confs ont des tailles foireuses... et du coup font exploser mon malloc...
je voulais savoir kelles sont les autres solutions possibles ?
 
actuellement je stocke mon fichier dans un char *
 
voila voila vos idees sont les bienvenues
 
sous Linux/Unix

Reply

Marsh Posté le 25-03-2001 à 22:29:37   

Reply

Marsh Posté le 25-03-2001 à 23:54:54    

ben alors ?
 
m enfin ... j attends moi ;)


---------------
Mes News
Reply

Marsh Posté le 26-03-2001 à 00:00:31    

Ben je sais pas, tu peux le lire par morceaux par exemple.

Reply

Marsh Posté le 26-03-2001 à 00:18:29    

tu peux me donner des exemples plz ?


---------------
Mes News
Reply

Marsh Posté le 26-03-2001 à 08:01:53    

Au lieu de faire un malloc de la taille de ton fichier de configuration, tu te crées un buffer à taille fixe que tu utilises pour lire le fichier en plusieurs fois si nécessaire.
 
 
=> par exemple:  
 
char *buffer = (char*) malloc(1024);
fread (FILE, buffer, 1024);

Reply

Marsh Posté le 26-03-2001 à 10:23:09    

Ben oui c'est comme ca qu'on fait d'habitude.
Tu lis ton fichier par bloc de 1024 octets.
Ensuite tu recuperes les lignes les unes a la suite des autres depuis ce buffer avec l'aide d'un pointeur tout con.
Des que ton pointeur arrive a la fin du bloc tu demandes de lire a nouveau 1024 octets.
tu as donc 2 buffers :
- un de 1024 octets pour lire le fichier.
- un de la taille que tu veux pour stocker la ligne courante.

Reply

Marsh Posté le 26-03-2001 à 10:51:51    

tu peux commencer par déterminer la taille du fichier
(en te placant à la fin et faisant un ftell), comme ca tu pourras
règler la taille de ton malloc.
 
de plus, t'es pas obligé d'utiliser un malloc pour lire  
le contenu du fichier.
 
tu définis un buffer (char *) suffisament grand pour contenir n'importe quelle ligne du fichier et tu le lits ligne
par ligne avec un fgets


---------------
Je ne suis ni pour, ni contre, bien au contraire  
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed