Structure FILE * et variables stdin, stdout et stderr

Entête à inclure

#include <stdio.h>  // <cstdio> en C++

Structure FILE * et variables stdin, stdout et stderr

FILE * stdin;
FILE * stdout;
FILE * stderr;

La structure FILE permet de stocker les informations relatives à la gestion d'un flux de données. Néanmoins, il est très rare que vous ayez besoin d'accéder directement à ses attributs. Effectivement, il existe un grand nombre de fonctions qui acceptent un paramètre basé sur cette structure pour déterminer ou contrôler divers aspects. Par exemple, il est possible d'utiliser la fonction feof pour savoir si on est (ou non) en fin de flux.

  • stdin : ce flot correspond au flux standard d'entrée de l'application. Par défaut, ce flux est associé au clavier : vous pouvez donc acquérir facilement des données en provenance du clavier. Quelques fonctions utilisent implicitement ce flux (scanf, par exemple).

  • stdout : c'est le flux standard de sortie de votre application. Par défaut, ce flux est associé à la console d'où l'application à été lancée. Quelques fonctions utilisent implicitement ce flux (printf, par exemple).

  • stderr : ce dernier flux est associé à la sortie standard d'erreur de votre application. Tout comme stdout, ce flux est normalement redirigé sur la console de l'application.

Exemple de code

#include <stdio.h>
#include <stdlib.h>

int main( int argc, char * argv[] ) {

    /* Cet exemple affiche le contenu d'un fichier sur la console */
    
    FILE * inputFile;
    
    argc--;   argv++;
    
    if ( argc == 0 ) {
        printf( "Usage: sample filename...\n" );
        exit( 0 );
    }
    
    inputFile = fopen( argv[0], "r" );
    if ( inputFile == NULL ) {
        printf( "Cannot open file %s\n", argv[0] );
        exit( 0 );
    }
    
    while ( ! feof( inputFile ) ) {
        fputc( fgetc( inputFile ), stdout );
    }
    
    fclose( inputFile );
        
    return 0;
}

Sujets connexes