Pour le debug,les traces... : savetoerrorlog ou ajjout de texte dans un fichier...

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 556 fois - Téléchargée 28 fois

Contenu du snippet

Voilà la fonction de trace très utile pour avoir une trace sans faire de débug...
Elle permet d'envoyer une chaine dans un fichier tout simplement en fait mais vu qu'elle sert très souvent et que beaucoup de mes collègues me l'on déjà copiée... pas de pb pour la publier...

Elle marche aussi bien en C qu'en C++...
En Gal, en C++, je la laisse comme seule fonction globale...

Voici son proto:
void saveToErrorLog(char* message, char* nomFichier)

et donc, on peut envoyer le contenu des variables, un message si on passe à certains endroit du code...

Rq: Cette fonction est utilisée dans le module Trace de MétaProg (rq: MétaProgLight sera très prochainement publié sur ce site...)

Voila...
@+,
Nono

Source / Exemple :


void saveToErrorLog(char* message, char* nomFichier)
{
/// ---------------------------------------------------------------------------------
/// ---------------- saveToErrorLog(char* message ,char* nomFichier) ----------------
/// ---------------------------------------------------------------------------------
/// -----  Objectif	: Ecriture d'une trace ds un fichier
/// -----  Auteur(s)	: Magic Nono 26/04/02 & 26/08/03
/// -----  PreCond	: /
/// -----  PostCond	: Trace insérée en fin de fichier
/// -----  Etat		: 1			(-1<0<1<2)
/// ---------------------------------------------------------------------------------
/// -----  char* message	: cf.nom
/// -----  char* nomFichier(par défaut : '"trace.b"')	: cf.nom
/// ---------------------------------------------------------------------------------
/// -----  Var Muettes (cf.partie préc) (2)	: message ,nomFichier
/// -----  Var Internes à la fonction (1)	: fichier
/// -----  Var In  (2)	: message ,nomFichier
/// -----  Var In  Globales Constantes (1)	: SEEK_END
	//pas de trace
	FILE*fichier;
	if((fichier= fopen((char*)nomFichier,"at")) == NULL)
	{
		fprintf(stderr,"erreur durant l'ouverture du fichier %s.\\n\\n",nomFichier);
		exit(5);	//pas PB ici...
	}
	fseek(fichier,0,SEEK_END);
	fputs(message,fichier);
	fputc('\\n',fichier);
	fclose(fichier);
}

A voir également

Ajouter un commentaire Commentaires
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
Dsl d'avoir mis lgt à reprendre cet échange,

le t est une option mise par défaut qui était à préciser au début du C...

voici ce qu'en disent les MSDN:

t
Open in text (translated) mode. In this mode, CTRL+Z is interpreted as an end-of-file character on input. In files opened for reading/writing with "a+", fopen checks for a CTRL+Z at the end of the file and removes it, if possible. This is done because using fseek and ftell to move within a file that ends with a CTRL+Z, may cause fseek to behave improperly near the end of the file.
Also, in text mode, carriage return–linefeed combinations are translated into single linefeeds on input, and linefeed characters are translated to carriage return–linefeed combinations on output. When a Unicode stream-I/O function operates in text mode (the default), the source or destination stream is assumed to be a sequence of multibyte characters. Therefore, the Unicode stream-input functions convert multibyte characters to wide characters. For the same reason, the Unicode stream-output functions convert wide characters to multibyte characters.


Nono.
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
apparement man de linux ne connait pas... Je pense qd mm pas avoir inventé ce truc (qui ne pose pas de pb d'ailleur...)
rq: le 'b' est ignoré sur ts les sys POSIX(dont Linux... Je ne C plus pour windows...)
et le 'b' est conseillé tt de mm

je consulte la bible (de Bjarne Stroustrup) et je vs tiens au courant...

@+
Nono.
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
peut-etre que "t" est par défaut...
affaire a suivre
en tt cas C ce que j'avais eu en cours et je l'ai tjs spécifié...
@+
Nono.
Messages postés
549
Date d'inscription
samedi 6 septembre 2003
Statut
Membre
Dernière intervention
6 mars 2010

Bonsoir,

Matt> le t C pour txt.
Ah bon, connait pas (pas standard)
disons que si on veut ouvrir un fichier en binaire on met b et en texte on ne met rien.
Si je me trompe qu'on me le dise...

Matt...
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
Matt> le t C pour txt
C vrai... pq le fseek qui a priori fait la mm chose...
euh.. je V tester ce WE et je te dis la sem prochaine...
ça se trouve, C redondant...
Bonne rq en tt cas!


Vecchio> on n'utilise pas tjs une interface DOS ... on a évolué depuis et cette fonction permet également de désigner plsr fichiers... (certes, ds le .h, j'en ai mis un par défaut)

Magicalement,
Nono.
Afficher les 8 commentaires

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.