begin process at 2012 05 27 16:39:52
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Fichiers / Disque

 > GESTION FICHIERS TXT (INSERTION, CONCATÉNATION, DÉNOMBREMENT, FILTRES ETC...)

GESTION FICHIERS TXT (INSERTION, CONCATÉNATION, DÉNOMBREMENT, FILTRES ETC...)


 Information sur la source

Note :
Aucune note
Catégorie :Fichiers / Disque Classé sous :fichier, insertion, txt, concatenation Niveau :Débutant Date de création :29/04/2006 Date de mise à jour :08/05/2006 23:58:45 Vu / téléchargé :9 812 / 769

Auteur : KissyFroth

Ecrire un message privé
Commentaire sur cette source (9)
Ajouter un commentaire et/ou une note

 Description

Mon code permet de faire plusieurs actions sur les fichiers txt. Il y a peut etre des sources similaires mais je n'ai pas vérifié (je sens que je vais encore avoir des commentaires du genre : ca y est déjà et mieux codé en plus). Les principales catégories sont Effacage/Copie/Concaténation/Remplacage/Insertion/ Dénombrement(lignes,mots...)/Filtres si l'on souhaite seulement sélectionner certains types de mots.
Voilà je crois que ca résume bien.

Attention n'utilisez pas de fichiers qui s'appellent temp.txt ou temp1.txt (déjà utilisés par le programme)

Hésitez pas a commenter la source pour dire ce que vous en pensez

Source

  • #include <iostream>
  • #include <vector>
  • using namespace std;
  • class LectEcr {
  • private :
  • FILE * f;
  • char * nom;
  • vector <int> indexDebutMots; //Table d'indexation de tous les mots (les debuts de mots)
  • vector <int> indexFinMots; //Table d'indexation de tous les mots (les fins de mots)
  • vector <int> indexLignes; //Table d'indexation de toutes les lignes (les debuts):
  • int nbMots; //Nombre de mots total (apres passage de la fonction MAJIndex)
  • int nbLignes; //Nombre de lignes total (apres passage de la fonction MAJIndex)
  • bool isopen ;
  • int mode_open;
  • public :
  • LectEcr(char * c); //Constructeur
  • /////////////////////////////////////////////////////////////////////////
  • // Fonctions de Base
  • /////////////////////////////////////////////////////////////////////////
  • //Ecrit la chaine dans le fichier à la position et sur la longueur indiquée
  • //Efface les caracteres présents sur ces positions si il le faut
  • bool ecrire(char * chaine,int pos,int longueur);
  • //Lit les caracteres et les place dans le buffer de debut sur la longueur indiquée
  • int lire(char * buffer,int deb,int longueur);
  • //Ouvre le fichier courant
  • //mode 1 : "r+" (lecture ecriture) / mode 2 mode concatenation "a"
  • bool ouvrir(int mode);
  • //Ferme le fichier courant
  • int fermer();
  • /////////////////////////////////////////////////////////////////////////
  • // Fonctions de remplacage de chaines
  • /////////////////////////////////////////////////////////////////////////
  • //Remplace toutes les occurences de la chaine a par la chaine b dans le fichier courant
  • bool remplaceChaine(char * a,char * b);
  • //Remplace toutes les occurences de la chaine a par la chaine b dans le fichier courant à partir de la
  • //position indiquée
  • bool remplaceChaineAPartirDe(char * a,char * b,int pos);
  • //Remplace toutes les occurences de la chaine a par la chaine b dans le fichier courant jusqu'à la
  • //position indiquée
  • bool remplaceChaineJusqua(char * a,char * b,int pos);
  • //Remplace toutes les occurences de la chaine a par la chaine b dans le fichier situées entre pos1 et pos2
  • //la methode remplacera les mots qui débordent sur la droite mais pas sur la gauche
  • bool remplaceChainePartie(char * a,char * b,int pos1,int pos2);
  • /////////////////////////////////////////////////////////////////////////
  • // Fonctions d'effacage
  • /////////////////////////////////////////////////////////////////////////
  • //Efface le fichier courant
  • bool effacer();
  • //Efface le fichier spécifié (les données car le fichier existe toujours)
  • bool effacer(char * nom_fichier);
  • //Efface la partie du fichier spécifiée (de pos sur longueur)
  • //IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
  • bool effacePartie(int pos,int longueur);
  • //Efface le fichier à partir de la position spécifiée
  • //IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
  • bool effaceAPartirDe(int pos);
  • //Efface le fichier jusqu'à la position spécifiée
  • //IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
  • bool effaceJusqua(int pos);
  • //Efface toutes les occurences de la chaine spécifiée (remplace par rien en fait)
  • //IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
  • bool effaceChaine(char * chaine);
  • /////////////////////////////////////////////////////////////////////////
  • // Fonctions de copie
  • /////////////////////////////////////////////////////////////////////////
  • ////Copie le contenu de a dans b (crée b si besoin ou écrase les données de b)
  • bool copie(char * source,char * dest); //copie le contenu de a dans b (crée b si besoin ou écrase les données de b)
  • //Copie le contenu de f vers le fichier dest
  • bool copieVers (char * dest);
  • //Copie le contenu de source dans le fichier f (écrase les données ds f si besoin)
  • bool copieDe (char * source);
  • //Copie la partie de a spécifiée dans b
  • bool copiePartie(char * source,char * dest, int pos, int longueur); //copie la partie de a spécifiée dans b
  • //Copie le contenu de a (à partir de pos) dans b
  • bool copieAPartirDe (char * source,char * dest, int pos);
  • /////////////////////////////////////////////////////////////////////////
  • // Insertion
  • /////////////////////////////////////////////////////////////////////////
  • //Insert le contenu d'une chaine à l'endroit spécifié
  • bool insertChaine(char * chaine,int pos);
  • //insert le contenu d'un autre fichier à l'endroit spécifié
  • bool insertFichier(char * fichier,int pos);
  • /////////////////////////////////////////////////////////////////////////
  • // Fonctions de concaténation
  • /////////////////////////////////////////////////////////////////////////
  • //Concatene source a la suite de dest (source reste inchangé)
  • bool concatFichier(char * source,char * dest);
  • //Concatene source a la suite de f (source reste inchangé)
  • bool concatFichierDe(char * source);
  • //Concatene f a la suite de dest (f reste inchangé)
  • bool concatFichierVers(char * dest);
  • //Concatene chaine a la suite du fichier courant
  • bool concatChaine(char * chaine);
  • //Concatene chaine à la suite du fichier spécifié
  • bool concatChaineFichier(char * chaine,char * fichier,int longueur);
  • /////////////////////////////////////////////////////////////////////////
  • // Fonctions de dénombrement
  • /////////////////////////////////////////////////////////////////////////
  • //Renvoie le nombre d'ocurences de 'chaine'
  • int nbOccurences(char * chaine);
  • //Renvoie le nombre de lignes IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
  • int getNbLignes() {return nbLignes;};
  • //Renvoie le nombre de mots IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
  • int getNbMots(){ return nbMots;};
  • /////////////////////////////////////////////////////////////////////////
  • // Fonctions pour trouver des positions particulières
  • /////////////////////////////////////////////////////////////////////////
  • //Renvoie la position du début du mot spécifié par son numéro (a)
  • //IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
  • int getPosDebutMot(int a) {
  • if (a>=0 && a<=nbMots) return indexFinMots.at(a-1); //Le premier mot est le mot n°1 (Convention KissyFroth)
  • else return -1;
  • };
  • //Renvoie la position de la fin du mot spécifié par son numéro (a)
  • //IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
  • int getPosFinMot(int a)
  • {
  • if (a>=0 && a<=nbMots) return indexFinMots.at(a-1);
  • else return -1;
  • };
  • //Renvoie la position du début de la ligne spécifiée par son numéro (a)
  • //IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
  • int getPosLigne(int a)
  • {
  • if (a>=0 && a<=nbLignes) return indexLignes.at(a-1);
  • else return -1;
  • };
  • //Renvoie le numéro du mot spécifié par une position (du moment que la position est dans le mot c'est bon)
  • //IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
  • int getNumMot(int pos);
  • //Renvoie le numéro de la ligne spécifiée par une position (du moment que la position est dans la ligne c'est bon)
  • //IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
  • int getNumLigne(int pos);
  • /////////////////////////////////////////////////////////////////////////
  • // Fonctions diverses
  • /////////////////////////////////////////////////////////////////////////
  • //Compare si 2 chaines sont identiques sur la longueur spécifiée (en partant du début)
  • bool egalChaines(char * a,char * b,int longueur);
  • //Renvoie vrai si le caractere a appartient a la chaine b faux sinon
  • bool appartient(char a,char * b);
  • //Fonction Mise A Jour Index
  • //Certainement la fonction la plus importante de la classe
  • //Elle sert à remplir les tableaux d'indexations de tous les mots 'indexMots' et de toutes les lignes 'indexLignes'
  • //mis en attributs private
  • //Elle sert aussi à dénombrer le nombre de mots et de lignes
  • //Vous devrez l'appeller avant chaque fonction de statistiques ou de positionnement (fonctions classées dans
  • // "denombrement" ou "positions particulieres") à moins qu'aucun changement n'ait été effectué depuis le dernier appel
  • //La chaine "separateurs" désigne tous les caractéres que vous souhaitez voir comme étant des séparateurs de mots
  • //Par exemple " " ou "*" peuvent etre désignés comme separateurs et ne feront donc jamais parti de mots
  • //Le caractere de saut de ligne '\n' et les guillemets '"' sont considérés comme des séparateurs par défaut
  • bool MAJIndex(char * separateurs);
  • //Met a jour uniquement l'index des lignes
  • bool MAJIndexLignes();
  • //Retourne true si le mot n° nb répond aux criteres de la chaine
  • //Le caractere * peut désigner n'importe quelle chaine de caracteres
  • //EXEMPLE : le mot "banane"
  • // motCriteres renverra "true" aux criteres "*a*a*" (il y a bien 2 "a" qui ne sont pas forcés de se suivre)
  • // motCriteres renverra "true" aux criteres "ba*" (banane commence par ba + autre chose après)
  • // motCriteres renverra "false" aux criteres "*aa*" (les 2 "a" devraient se suivre pour que ce soit vrai)
  • // motCriteres renverra "true" aux criteres "*b*" (le caractere "*" peut ne rien désigner : il ny a rien avant b)
  • // motCriteres renverra "false" aux criteres "*u*" (le caractere "u" n'est pas présent dans "banane")
  • // motCriteres renverra "false" aux criteres "*n" (banane ne se termine pas par n")
  • //
  • // min et max sont des filtres de taille du mot recherché
  • // si vous voulez des mots de toutes les tailles vous devrez mettre en param 0 pour min et -1 pour max
  • //
  • //IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
  • //
  • bool motCriteres(char * crit,int nb,int min,int max);
  • //Copie tous les mots du fichier courant qui répondent aux critères "crit" dans le fichier f;
  • // min et max sont des filtres de taille du mot recherché
  • // si vous voulez des mots de toutes les tailles vous devrez mettre en param 0 pour min et -1 pour max
  • int copieMots(char * fichier,char * crit,int min,int max);
  • };
#include <iostream>
#include <vector>

using namespace std;

class LectEcr {

	


private : 

	FILE * f;
	char * nom; 
	
	vector <int> indexDebutMots;	//Table d'indexation de tous les mots (les debuts de mots)
	vector <int> indexFinMots;		//Table d'indexation de tous les mots (les fins de mots)
	vector <int> indexLignes;		//Table d'indexation de toutes les lignes (les debuts):
	
	int nbMots;					//Nombre de mots total (apres passage de la fonction MAJIndex)
	int nbLignes;				//Nombre de lignes total (apres passage de la fonction MAJIndex)

	bool isopen ;
	int mode_open;


public : 

	LectEcr(char * c);			//Constructeur


/////////////////////////////////////////////////////////////////////////
//	Fonctions de Base
/////////////////////////////////////////////////////////////////////////

	//Ecrit la chaine dans le fichier à la position et sur la longueur indiquée
	//Efface les caracteres présents sur ces positions si il le faut
	bool ecrire(char * chaine,int pos,int longueur);  
	
	
	//Lit les caracteres et les place dans le buffer de debut sur la longueur indiquée
	int lire(char * buffer,int deb,int longueur);	   

	//Ouvre le fichier courant
	//mode 1 : "r+" (lecture ecriture) / mode 2 mode concatenation "a"
	bool ouvrir(int mode);

	//Ferme le fichier courant
	int fermer();



/////////////////////////////////////////////////////////////////////////
//	Fonctions de remplacage de chaines
/////////////////////////////////////////////////////////////////////////



	//Remplace toutes les occurences de la chaine a par la chaine b dans le fichier courant  
	bool remplaceChaine(char * a,char * b);					
	
	//Remplace toutes les occurences de la chaine a par la chaine b dans le fichier courant à partir de la
	//position indiquée
	bool remplaceChaineAPartirDe(char * a,char * b,int pos);			
	
	//Remplace toutes les occurences de la chaine a par la chaine b dans le fichier courant jusqu'à la
	//position indiquée
	bool remplaceChaineJusqua(char * a,char * b,int pos);				
	
	//Remplace toutes les occurences de la chaine a par la chaine b dans le fichier situées entre pos1 et pos2
	//la methode remplacera les mots qui débordent sur la droite mais pas sur la gauche
	bool remplaceChainePartie(char * a,char * b,int pos1,int pos2);	




/////////////////////////////////////////////////////////////////////////
//	Fonctions d'effacage
/////////////////////////////////////////////////////////////////////////


	//Efface le fichier courant
	bool effacer();							 		
	
	//Efface le fichier spécifié (les données car le fichier existe toujours)
	bool effacer(char * nom_fichier);        		
	
	//Efface la partie du fichier spécifiée (de pos sur longueur)
	//IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
	bool effacePartie(int pos,int longueur); 		
	
	//Efface le fichier à partir de la position spécifiée
	//IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
	bool effaceAPartirDe(int pos);								
	
	//Efface le fichier jusqu'à la position spécifiée
	//IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
	bool effaceJusqua(int pos);									
	
	//Efface toutes les occurences de la chaine spécifiée (remplace par rien en fait)
	//IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
	bool effaceChaine(char * chaine);		 			


/////////////////////////////////////////////////////////////////////////
//	Fonctions de copie
/////////////////////////////////////////////////////////////////////////


	////Copie le contenu de a dans b (crée b si besoin ou écrase les données de b)
    bool copie(char * source,char * dest); //copie le contenu de a dans b (crée b si besoin ou écrase les données de b)     
	
	//Copie le contenu de f vers le fichier dest
	bool copieVers (char * dest);  											
	
	//Copie le contenu de source dans le fichier f (écrase les données ds f si besoin)
	bool copieDe (char * source);  
	
	//Copie la partie de a spécifiée dans b
	bool copiePartie(char * source,char * dest, int pos, int longueur); //copie la partie de a spécifiée dans b			
	
	//Copie le contenu de a (à partir de pos) dans b
	bool copieAPartirDe (char * source,char * dest, int pos);          


/////////////////////////////////////////////////////////////////////////
//	Insertion
/////////////////////////////////////////////////////////////////////////


	//Insert le contenu d'une chaine à l'endroit spécifié
	bool insertChaine(char * chaine,int pos);																				

	//insert le contenu d'un autre fichier à l'endroit spécifié	
	bool insertFichier(char * fichier,int pos); 	




/////////////////////////////////////////////////////////////////////////
//	Fonctions de concaténation
/////////////////////////////////////////////////////////////////////////

	//Concatene source a la suite de dest (source reste inchangé)
	bool concatFichier(char * source,char * dest); 		
	
	//Concatene source a la suite de f (source reste inchangé)
	bool concatFichierDe(char * source); 						
	
	//Concatene f a la suite de dest (f reste inchangé)
	bool concatFichierVers(char * dest); 

	//Concatene chaine a la suite du fichier courant
	bool concatChaine(char * chaine);																																			
	
	//Concatene chaine à la suite du fichier spécifié
	bool concatChaineFichier(char * chaine,char * fichier,int longueur);





/////////////////////////////////////////////////////////////////////////
//	Fonctions de dénombrement
/////////////////////////////////////////////////////////////////////////
	
	//Renvoie le nombre d'ocurences de 'chaine'
	int nbOccurences(char * chaine);
	
	//Renvoie le nombre de lignes IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
	int getNbLignes() {return nbLignes;};
	
	//Renvoie le nombre de mots IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
	int getNbMots(){ return nbMots;};
	


/////////////////////////////////////////////////////////////////////////
//	Fonctions pour trouver des positions particulières
/////////////////////////////////////////////////////////////////////////

	//Renvoie la position du début du mot spécifié par son numéro (a) 
	//IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
	int getPosDebutMot(int a) { 
		if (a>=0 && a<=nbMots) return indexFinMots.at(a-1); //Le premier mot est le mot n°1 (Convention KissyFroth)
		else return -1;
	};  
	
	//Renvoie la position de la fin du mot spécifié par son numéro (a) 
	//IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
	int getPosFinMot(int a)
	{ 
		if (a>=0 && a<=nbMots) return indexFinMots.at(a-1);
		else return -1;
	};
	
	//Renvoie la position du début de la ligne spécifiée par son numéro (a) 
	//IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
	int getPosLigne(int a) 
	{ 
		if (a>=0 && a<=nbLignes) return indexLignes.at(a-1);
		else return -1;
	};
	
	//Renvoie le numéro du mot spécifié par une position (du moment que la position est dans le mot c'est bon)
	//IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
	int getNumMot(int pos);
	
	//Renvoie le numéro de la ligne spécifiée par une position (du moment que la position est dans la ligne c'est bon)
	//IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
	int getNumLigne(int pos);



/////////////////////////////////////////////////////////////////////////
//	Fonctions diverses
/////////////////////////////////////////////////////////////////////////

	//Compare si 2 chaines sont identiques sur la longueur spécifiée (en partant du début) 
	bool egalChaines(char * a,char * b,int longueur);				
	
	//Renvoie vrai si le caractere a appartient a la chaine b faux sinon
	bool appartient(char a,char * b);

	
	
	//Fonction Mise A Jour Index
	//Certainement la fonction la plus importante de la classe
	//Elle sert à remplir les tableaux d'indexations de tous les mots 'indexMots' et de toutes les lignes 'indexLignes'
	//mis en attributs private
	//Elle sert aussi à dénombrer le nombre de mots et de lignes
	//Vous devrez l'appeller avant chaque fonction de statistiques ou de positionnement (fonctions classées dans
	// "denombrement" ou "positions particulieres") à moins qu'aucun changement n'ait été effectué depuis le dernier appel
	//La chaine "separateurs" désigne tous les caractéres que vous souhaitez voir comme étant des séparateurs de mots
	//Par exemple " " ou "*" peuvent etre désignés comme separateurs et ne feront donc jamais parti de mots 
	//Le caractere de saut de ligne '\n' et les guillemets '"' sont considérés comme des séparateurs par défaut
	bool MAJIndex(char * separateurs);
	

	//Met a jour uniquement l'index des lignes
	bool MAJIndexLignes();


	
	
	//Retourne true si le mot n° nb répond aux criteres de la chaine
	//Le caractere * peut désigner n'importe quelle chaine de caracteres
	//EXEMPLE : le mot "banane"
	// motCriteres renverra "true" aux criteres "*a*a*" (il y a bien 2 "a" qui ne sont pas forcés de se suivre) 
	// motCriteres renverra "true" aux criteres "ba*" (banane commence par ba + autre chose après)
	// motCriteres renverra "false" aux criteres "*aa*" (les 2 "a" devraient se suivre pour que ce soit vrai)
	// motCriteres renverra "true" aux criteres "*b*" (le caractere "*" peut ne rien désigner : il ny a rien avant b)
	// motCriteres renverra "false" aux criteres "*u*" (le caractere "u" n'est pas présent dans "banane")
	// motCriteres renverra "false" aux criteres "*n" (banane ne se termine pas par n")
	//
	// min et max sont des filtres de taille du mot recherché
	// si vous voulez des mots de toutes les tailles vous devrez mettre en param 0 pour min et -1 pour max
	//
	//IMPORTANT: appeller MAJIndex AVANT d'appeller cette fonction
	//
	bool motCriteres(char * crit,int nb,int min,int max);

	
	
	//Copie tous les mots du fichier courant qui répondent aux critères "crit" dans le fichier f;
	// min et max sont des filtres de taille du mot recherché
	// si vous voulez des mots de toutes les tailles vous devrez mettre en param 0 pour min et -1 pour max
	int copieMots(char * fichier,char * crit,int min,int max);





};

 Conclusion

J'ai inclus un main où il y a des exemples détaillés de fonctions de la classe. Je pense que c'est plus parlant que des explications.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

29 avril 2006 23:28:24 :
Aucune importance
01 mai 2006 22:25:11 :
Modification du systeme d'indexation des mots et des lignes (passage de tableaux a vector) Mise a jour de certains commentaires Ajout de vérifications supplémentaires sur certaines fonctions afin d'éviter des erreurs éventuelles
08 mai 2006 23:58:45 :
-Suppresion des ouvertures/fermetures des fichiers à chaque appel de fonction (rapidité des fonctions largement augmentée)

 Sources du même auteur

Source avec Zip ENVOI MAILS AVEC PROTOCOLE SMTP
Source avec Zip OTHELLO AVEC IA

 Sources de la même categorie

COMPTER LE NOMBRE DE PAGES D'UN FICHIER PDF par Renfield
Source avec Zip Source avec une capture GENERE BMP par lajouad
Source avec Zip Source avec une capture GETIONNAIRE D'UNE BIBLIOTHÉQUE EN C par benzarabel
FONCTION D'ÉDITION DE FICHIER BIT À BIT [C-MULTIPLATEFORME] par lynxtyle
Source avec Zip Source avec une capture UN GESTIONNAIRE DU FICHIER par benzarabel

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture GENERE BMP par lajouad
Source avec Zip Source avec une capture GETIONNAIRE D'UNE BIBLIOTHÉQUE EN C par benzarabel
FONCTION D'ÉDITION DE FICHIER BIT À BIT [C-MULTIPLATEFORME] par lynxtyle
Source avec Zip Source avec une capture UN GESTIONNAIRE DU FICHIER par benzarabel
Source avec Zip Source avec une capture TROUVER LES NOMBRES PREMIERS INFÉRIEURS À UNE LIMITE DONNÉE par angrevol

Commentaires et avis

Commentaire de luhtor le 30/04/2006 00:28:32

Oups je saute en voyant ca:
     int indexMots [100000][2];    //Table d'indexation de tous les mots : en [1] les debuts de mots et en [2] les fins de mots
     int indexLignes [10000];

Aller deux beaux vector et tu enlèves ca :)

Sinon ca, ca m'étonnerait que ca marche bien:
int getPosFinMot(int a){ return indexMots[a-1][2];};
=> Un tableau en C, ca ommence a 0.

Puis a mon avis, ya mieux que d'ouvrir et fermer sans arret le fichier. Pk tu fais pas une fonction Open puis Close ?
Rajoute une gestion d'erreur avec possibilité de récupérer un message d'erreur.

Sinon une question générale, c'est quoi la différence, si différence il y a, entre:
ofstream file;
et
FILE file;

Puisque le C++ fournit <fstream>,y a t il un intéret particulier a utiliser la deuxième solution ?

Commentaire de KissyFroth le 30/04/2006 16:30:05

Pour les tableaux je te rassure ca marche tres bien : il suffit simplement de savoir que le premier
mot est le mot n°1 et tout va bien. Les vector seraient certainement mieux mais comme je ne les utilise
jamais... enfin je vais voir

En ce qui concerne l'ouverture et les fermetures intempestives ca vient tout simplement du fait que
j'ai voulu faire un truc tres simple d'utilisation et pas forcément très performant. Ceci dit si je vois
que d'autres le demande, je peux aisément modifier le systeme.

Et pour ofstream et FILE je ne connai pas la différence (mais ca doit etre équivalent je pense)
J'ai choisi la méthode FILE parce que j'avais un probleme avec ofstream (je me souvien plus lequel)

Commentaire de Joky le 30/04/2006 17:27:18

C'est sur que ça fait peur de déclarer 300 000 int comme ça lol :)

Commentaire de BruNews le 30/04/2006 18:27:06 administrateur CS

Moi j'en vois 210 000 int, mais bon... Les voies de Joky sont surement impénétrables.

Commentaire de Joky le 30/04/2006 18:56:46

Ah oui problème de vue désolé lol

Commentaire de KissyFroth le 01/05/2006 14:03:19

Bon bon j'ai compris : je vais modifier ca rapidement (bah le principal c'est quand meme que ca marche non ?)
C'est vrai qu'au point de vue mémoire, c'est pas optimisé.

Commentaire de KissyFroth le 01/05/2006 22:30:27

Voilà c'est fait : les tableaux (qui n'avaient pas rencontré un franc succès) ont été remplacé par des vector
J'espère que ca fera taire les raleurs ... :p

Commentaire de luhtor le 03/05/2006 15:38:42

"(bah le principal c'est quand meme que ca marche non ?)". Bas justement, si t'as plus de 100.000 mots ?

Commentaire de KissyFroth le 05/05/2006 16:55:21

Eh ben c'était pas prévu tout simplement mais maintenant ca ne pose plus de problèmes (en réponse à Luthor)
Note : je vais bientot mettre une nouvelle mise a jour dans laquelle je vais reprendre ton conseil, Luthor :
à savoir que je vais supprimmer ces ouvertures/fermetures permananentes pour les remplacer par une fonction "ouvrir"
et une fonction "fermer".
Sur les gros fichiers ca représente un gain de temps hallucinant (on divise le temps de traitement par plus de 10 )
mais au début j'avais fait des tests sur de petits fichiers et je ne m'était pas rendu compte.
Par ailleurs nombre de fonctions vont etre optimisées.  

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

VNEZ TOUS VOIR SA !! [ par Mickylord ] regardez , je ne sais pas comment faire pour ecrire une valeur numerique dans un fichier .txt . Comment je fait ???:void EcrireDisque (void) //SA ecriture en mode insertion [ par loopy ] Salut, je voudrais savoir s'il est possible de rajouter des infos dans un fichier (en mode texte) sans que cela efface les infos precedentes car je do Enregistrer en HEXA un texte avec gcc !! [ par UncleShu ] /* * Ce programme affiche le fichier en HEXADECIMAL et se copie lui-même avec * une autre exetenstion (.txt). Moi je voudrais qui affiche le fichier * prb de récupération [ par benb78 ] bonjour à tous j'ai un problème et j'éspère que vous allez pouvoir m'aider, alors voila:J'aimerai pouvoir faire un listing (dans un fichier) de toutes ecriture ds un fichier txt [ par Leparasite ] Bonjour , bon je suis nouveau dans la programation , alors j'essai de faire des petit truc assez simple pour commencer et là j'ai un petit prob .bon j recuperation de doner ds un fichier txt [ par Leparasite ] Bonjours voila mon probleme :bon je cree un fichier txt a partir ds boutton ,le code :void CV1Dlg::OnOK() { // TODO: Add extra validation here UpdateD lecture d'un fichier txt-recuperationde donner-réecriture [ par Leparasite ] voila ce que je ve faire :sur mon dique dure c:\ j'ai un fichier TXT .je veu que mon programe lise le contenu de ce fichier et le réecrive sur le d: d Afficher un fichier txt inclus dans les ressources dans une editBox. [ par TheMaster ] Bonjour,Aidez moi s'il vous plait!J'aimerais afficher un fichier texte, qui est inclus dans mes ressources (VC++6.0), dans une edit Box.Je n'arrive pa imprimer un fichier html avec insertion d images... [ par nebucad ] Bon jour a tous et a toutesJe devai imprimer des fichiers word et un fichier html sous win qui a deuw images inserees.Je lance un ShellExecute de cett traitement d'un fichier txt [ par sylvain ] Bonjour,Je doit effectuer un traitement sur un fichier txt.Je reçoit un fichier txt sous cette forme :// début fichierdébut annonce..........@ fin ann


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,577 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales