Bonjour,

Je souhaite rediriger la sortie standard vers un fichier. J'y arrive avec la fonction freopen.

Exemple :
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
 
#include <stdio.h>
 
main() {
 
    /* redirection de stdout dans un fichier */
    if ( freopen("c:\\tempo.log", "w", stdout) == NULL)
       fprintf(stderr, "erreur a la redirection de stdout\n");
 
    /* Cet affichage va dans le fichier  tempo.log */
    printf("Cet affichage va dans le fichier\n");
 
    /* fermeture du flux stdout */
    fclose(stdout);
 
    return 0;
}
Par contre, je ne trouve pas de moyen de pour revenir a l'état d'avant la redirection. Si je fait :

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
 
#include <stdio.h>
 
main() {
 
    /* redirection de stdout dans un fichier */
    if ( freopen("c:\\tempo.log", "w", stdout) == NULL)
       fprintf(stderr, "erreur a la redirection de stdout\n");
 
    /* Cet affichage va dans le fichier  tempo.log */
    printf("Cet affichage va dans le fichier\n");
 
    /* fermeture du flux stdout */
    fclose(stdout);
 
	printf("Cet affichage va dans la sortie standard\n");
 
    return 0;
}
la chaine de caractère "Cet affichage va dans la sortie standard" ne va ni dans le fichier c:\\tempo.log, ni sur la sortie standard.

Je ne sais pas comment revenir à l'état d'avant pour que les printfs fonctionnent normalement.