bonjour tous le monde.

j'ai l'intention de me creer une petite biblioteque d'utilitaire donc un systeme de log.
je cherche a modifier mon anciens systeme de log qui permettait d'ecrire qu'un seul fichier a la fois. ce que je veux faire c'est quelque chose comme ceci:

fichier main:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
  int sousSysteme1 = initLog("networklog");
  int sousSysteme2 = initLog("system");
 
  //code code code code code code.....
  closeLog(sousSysteme1);
  ...
  ...
  closeLog(sousSysteme2);
ma question c'est est la : voici le log.h
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
#ifndef _LOG_H_
#define _LOG_H_ 1
 
#include <stdio.h>
 
#define MAX_LOG 5
 
static FILE *tbLog[MAX_LOG] = {NULL};
 
extern int initLog(char filename[256]);
extern int closeLog(int logd);
 
#endif
donc chaque fois que j'appelle fopen le numero du fichier log est renvoyer pour fermeture .
jusque la pas vraiment de question.
l'implementation des fonction init et close me donne satisfaction dans le resultat mais je me demande sij'ai vraiment le droit de faire ce qui va suivre et que si ca marche c'est pas justement par chance:

log.c:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include "log.h"
#include <string.h>
#include <stdlib.h>
 
extern int initLog(char filename[256])
{
	static int logd = -1;          //Log to open number value from 0 to MAX_LOG  
        FILE *rien=NULL;
 
	logd++;                       // new log number
 
	if ((rien = fopen(filename,"w")==NULL))   //record file Pointer *********
	{
               return -1; 
        }
        tbLog[logd] = rien;
	return logd;	              //return log number
}
 
extern int closeLog(int logd)
{
	if (tbLog[logd] == NULL)
	{
		printf("No log to close \n");
		return -1;
	}
	printf("Log %d value is %p",logd,tbLog[logd]);
	fclose(tbLog[logd]);
	printf("Closed\n");
	return 0;
}
donc je ne fait que creer et refermer des fichiers. la ligne avec les ****** et celle qui me semble suspecte. avant de me lancer dans la suite de cet outils j'aimerai savoir si le stockage et la lecture des FILE* sont "propres"
et que ca ne sera pas sujet a bug.

milles merci

ps: comme sur ce forum je sais qu'il y a des allergiques au mot 'extern', svp ignorez le. il est la parceque je l'aime bien.
ps2: commente en anglais car je suis en chine et ceux qui l'utiliseront avec moi parlent pas francais.