UN PROGRAMME POUR INDENTER LES FICHIER EN .CPP, .H, .C, .JAVA
slashbeastleo93
Messages postés4Date d'inscriptionvendredi 16 mai 2003StatutMembreDernière intervention17 mai 2003
-
17 mai 2003 à 10:56
slashbeastleo
Messages postés7Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention26 mars 2004
-
18 mai 2003 à 20:04
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
slashbeastleo
Messages postés7Date d'inscriptionsamedi 17 mai 2003StatutMembreDernière intervention26 mars 2004 18 mai 2003 à 20:04
ok, merci, mais c'est a vous de le modifier, car je suis pas trop experimenter....
lol
trinitacs
Messages postés249Date d'inscriptionmardi 16 juillet 2002StatutMembreDernière intervention 7 août 20032 17 mai 2003 à 15:44
Il est possible d'améliorer ton code.
Tout d'abord je le trouve très long pour ce qu'il fait.
Tu n'est pas obligé d'indiqué la taille d'un tableau à passer à une fonction si il n'a qu'une dimension.
Tes fonctions sont beaucoup trop longues.
Tu devrai mettre de l'ordre avec des objet.
Si tu utilises la classe string (basic_string) ton code se grandement plus performant (rapidité + robuste)
Tu lit le fichier d'une mauvaise manière. Lire octect par octect c'est un peu bourrin. Met le pointeur à la fin du fichier, demande la position de celui-ci et tu auras la taille du fichier en octect. Ensuite tu alloue un tableau dynamiquement au lieu de la faire d'une manière statique qui n'est pas très fiable. Si le fichier fait plus de 1 000 000 d'octetc il y aura un e erreur à l'éxécution.
Pour résoudre ce problème allou le dynamiquement en fonction de la taille.
Et enfin pour le lire utilise la fonction in.read( taille );
Voici un code qui résume ce que j'ai dis pour lire le fichier:
---------------
// read a file into memory
#include
#include <fstream>
using namespace std;
int main () {
int length;
char * buffer;
ifstream is;
is.open ("test.txt", ios::binary );
// get length of file:
is.seekg (0, ios::end);
length = is.tellg();
is.seekg (0, ios::beg);
// allocate memory:
buffer = new char [length];
// read data as a block:
is.read (buffer,length);
is.close();
cout.write (buffer,length);
return 0;
}
---------------
tiré de cplusplus.com dans la doc de ifstream.
slashbeastleo93
Messages postés4Date d'inscriptionvendredi 16 mai 2003StatutMembreDernière intervention17 mai 2003 17 mai 2003 à 10:56
18 mai 2003 à 20:04
lol
17 mai 2003 à 15:44
Tout d'abord je le trouve très long pour ce qu'il fait.
Tu n'est pas obligé d'indiqué la taille d'un tableau à passer à une fonction si il n'a qu'une dimension.
Tes fonctions sont beaucoup trop longues.
Tu devrai mettre de l'ordre avec des objet.
Si tu utilises la classe string (basic_string) ton code se grandement plus performant (rapidité + robuste)
Tu lit le fichier d'une mauvaise manière. Lire octect par octect c'est un peu bourrin. Met le pointeur à la fin du fichier, demande la position de celui-ci et tu auras la taille du fichier en octect. Ensuite tu alloue un tableau dynamiquement au lieu de la faire d'une manière statique qui n'est pas très fiable. Si le fichier fait plus de 1 000 000 d'octetc il y aura un e erreur à l'éxécution.
Pour résoudre ce problème allou le dynamiquement en fonction de la taille.
Et enfin pour le lire utilise la fonction in.read( taille );
Voici un code qui résume ce que j'ai dis pour lire le fichier:
---------------
// read a file into memory
#include
#include <fstream>
using namespace std;
int main () {
int length;
char * buffer;
ifstream is;
is.open ("test.txt", ios::binary );
// get length of file:
is.seekg (0, ios::end);
length = is.tellg();
is.seekg (0, ios::beg);
// allocate memory:
buffer = new char [length];
// read data as a block:
is.read (buffer,length);
is.close();
cout.write (buffer,length);
return 0;
}
---------------
tiré de cplusplus.com dans la doc de ifstream.
17 mai 2003 à 10:56