|
Sujet : [c] bufferiser un fichier |
| HelloWorld |
Citation :
au fait, faut jamais caster malloc....
|
http://www.isty-info.uvsq.fr/~rume [...] 2.html#q_1
Citation :
la "bufferisation" ne se fait pas obligatoirement d'un seul bloc ! typiquement, on bufferise par morceaux (taille fixée) : on lit X caractères que l'on met dans un buffer, dès que l'on a besoin de caractères supplémentaires, on lit les X caractères suivants. tout le pb est dans la gestion des mots qui commencent à la fin d'un bloc et finissent dans le suivant...
d'ailleurs, si vous utilisez un FILE *, hé bien, hé-hé-hé, inutile de bufferiser, ça l'est déjà :D
|
Mais ... c'est pas à l'OS de se charger de tout cela ? Il se fait sa popote ... en optimisant à l'aide de la pagination et autre (plusieurs processus lisant le même fichier partageront le même "buffer" ...)
Je dirais même : bufferiser un fichier, c'est *mal*, car c'est déjà fait par l'OS, et on le refait une seconde fois, bref on bouffe de le mémoire pour rien (et en plus on perd du temps en recopies inutiles ...)
A moins que quelque chose m'ait échappé ... |
| mogi |
la "bufferisation" ne se fait pas obligatoirement d'un seul bloc ! typiquement, on bufferise par morceaux (taille fixée) : on lit X caractères que l'on met dans un buffer, dès que l'on a besoin de caractères supplémentaires, on lit les X caractères suivants. tout le pb est dans la gestion des mots qui commencent à la fin d'un bloc et finissent dans le suivant...
d'ailleurs, si vous utilisez un FILE *, hé bien, hé-hé-hé, inutile de bufferiser, ça l'est déjà :D
il me semble que dans le K&R (Kernighan et Ritchie) c'est expliqué comment ça marche... ouais, attend, je l'ai là...
"feuillette-feuillette-feuillette-feuillette-feui llette-feuillette-feuillette-feuillette-feuillette ..." bingo : chapitre 8, dans la 2nde édition anglaise, c'est page 169.
Mogi.
ps : il manque un 'tit fseek dans le prog de Leto II :
fseek(pFile,0,SEEK_END); taille=ftell(pFile);
fseek(pFile,0,SEEK_SET); buffer=(unsigned char*)malloc(taille); fread(buffer,1,taille,pFile); |