#include <stdio.h> // <cstdio> en C++
int fputc( int character, FILE * stream );
int putc( int character, FILE * stream );
int putchar( int character );
Ces fonctions permettent d'écrire un caractère sur le flux de caractères passé en paramètre (sauf dans le cas de putchar
ou là
stdout
est imposé). Une fois le caractère écrit dans le flux, la position de la tête de lecture sera déplacé pour la prochaine
écriture.
En fait fputc
et putc
sont identiques au détail près que sur certains compilateurs
la fonction putc
est implémentée sous forme d'une macro.
int
(et non un pas char
) trouve son origine dans l'utilisation de la fonction fgetc. Effectivement, celle-ci
peut soit retourner un caractère (donc 256 possibilités différentes) soit un code d'erreur, qui se doit donc d'être un 257 état potentiel.
En conséquence, le type de retour de la fonction fgetc est donc int
. Le fait que fputc
accepte un int
permet donc la chose suivante : fputc( fgetc( sourceStream ), destStream );
.
fopen
.
En cas de succés, ces fonctions doivent renvoyer le caractère envoyé dans le flux. Par contre, en cas d'erreur, la valeur EOF
sera
retournée. Dans ce cas, il vous faudra alors consulter la variable errno
pour obtenir de plus
amples informations sur l'erreur constatée.
EAGAIN : le flux est vérrouillé et il faudra tenter ultérieurement l'écriture.
EBADF : le descripteur de flux (FILE *
) passé en paramètre est invalide.
EIO : une erreur d'accès physique au flux vient d'être générée.
...
#include <stdio.h> #include <stdlib.h> int main( int argc, char * argv[] ) { int counter; FILE * outputFile; argc--; argv++; if ( argc == 0 ) { printf( "Usage: sample filename\n" ); exit( 0 ); } outputFile = fopen( argv[0], "w" ); if ( outputFile == NULL ) { printf( "Cannot open file %s\n", argv[0] ); exit( -1 ); } for ( counter='a'; counter<='z'; ++counter ) { fputc( counter, outputFile ); } fputc( '\n', outputFile ); for ( counter='A'; counter<='Z'; ++counter ) { fputc( counter, outputFile ); } fputc( '\n', outputFile ); fclose( outputFile ); return 0; }
Améliorations / Corrections
Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.
Emplacement :
Description des améliorations :