fopen, _wfopenfopen, _wfopen

Ouvre un fichier.Opens a file. Des versions plus sécurisées de ces fonctions qui effectuent des validations supplémentaires des paramètres et retournent des codes d’erreur sont disponibles. Consultez fopen_s, _wfopen_s.More-secure versions of these functions that perform additional parameter validation and return error codes are available; see fopen_s, _wfopen_s.

SyntaxeSyntax

FILE *fopen(
   const char *filename,
   const char *mode
);
FILE *_wfopen(
   const wchar_t *filename,
   const wchar_t *mode
);

ParamètresParameters

filenamefilename
Nom du fichier.File name.

modemode
Genre d'accès qui est activé.Kind of access that's enabled.

Valeur de retourReturn Value

Chacune de ces fonctions retourne un pointeur vers le fichier ouvert.Each of these functions returns a pointer to the open file. Une valeur de pointeur null indique une erreur.A null pointer value indicates an error. Si filename ou mode a la valeur null ou est une chaîne vide, ces fonctions déclenchent le gestionnaire de paramètre non valide, qui est décrit dans validation de paramètre.If filename or mode is NULL or an empty string, these functions trigger the invalid parameter handler, which is described in Parameter Validation. Si l’exécution est autorisée à se poursuivre, ces fonctions retournent la valeur null et attribuent à errno la valeur EINVAL.If execution is allowed to continue, these functions return NULL and set errno to EINVAL.

Pour plus d’informations, consultez errno, _doserrno, _sys_errlist et _sys_nerr.For more information, see errno, _doserrno, _sys_errlist, and _sys_nerr.

NotesRemarks

La fonction fopen ouvre le fichier spécifié par filename.The fopen function opens the file that is specified by filename. Par défaut, une chaîne de nom de fichier étroite est interprétée à l’aide de la page de codes ANSI (CP_ACP).By default, a narrow filename string is interpreted using the ANSI codepage (CP_ACP). Dans les applications de bureau Windows, la page de codes OEM (CP_OEMCP) peut être utilisée à la place avec la fonction SetFileApisToOEM .In Windows Desktop applications this can be changed to the OEM codepage (CP_OEMCP) by using the SetFileApisToOEM function. Vous pouvez utiliser la fonction AreFileApisANSI pour déterminer si filename est interprété à l’aide de la page de codes ANSI ou de la page de codes OEM par défaut du système.You can use the AreFileApisANSI function to determine whether filename is interpreted using the ANSI or the system default OEM codepage. _wfopen est une version à caractères larges de fopen; les arguments de _wfopen sont des chaînes à caractères larges._wfopen is a wide-character version of fopen; the arguments to _wfopen are wide-character strings. Sinon, _wfopen et fopen se comportent de la même façon.Otherwise, _wfopen and fopen behave identically. L’utilisation de _wfopen n’affecte pas le jeu de caractères codé utilisé dans le flux de fichier.Just using _wfopen does not affect the coded character set that is used in the file stream.

fopen accepte les chemins d’accès qui sont valides sur le système de fichiers au point d’exécution; fopen accepte les chemins d’accès UNC et les chemins d’accès qui impliquent des lecteurs réseau mappés tant que le système qui exécute le code a accès au partage ou au lecteur mappé au moment de l’exécution.fopen accepts paths that are valid on the file system at the point of execution; fopen accepts UNC paths and paths that involve mapped network drives as long as the system that executes the code has access to the share or mapped drive at the time of execution. Lorsque vous construisez des chemins d’accès pour fopen, assurez-vous que les lecteurs, les chemins d’accès ou les partages réseau sont disponibles dans l’environnement d’exécution.When you construct paths for fopen, make sure that drives, paths, or network shares will be available in the execution environment. Vous pouvez utiliser des barres obliques (/) ou des barres obliques inverses (\) comme séparateurs de répertoire dans un chemin.You can use either forward slashes (/) or backslashes (\) as the directory separators in a path.

Vérifiez toujours la valeur de retour pour voir si le pointeur est null avant d'exécuter toute une autre opération sur le fichier.Always check the return value to see whether the pointer is NULL before you perform any additional operations on the file. Si une erreur se produit, la variable globale errno est définie et peut être utilisée pour obtenir des informations spécifiques sur l’erreur.If an error occurs, the global variable errno is set and may be used to obtain specific error information. Pour plus d’informations, consultez errno, _doserrno, _sys_errlist et _sys_nerr.For more information, see errno, _doserrno, _sys_errlist, and _sys_nerr.

Prise en charge UnicodeUnicode Support

fopen prend en charge les flux de fichiers Unicode.fopen supports Unicode file streams. Pour ouvrir un fichier Unicode, transmettez un indicateur CCS qui spécifie l’encodage souhaité à fopen, comme suit.To open a Unicode file, pass a ccs flag that specifies the desired encoding to fopen, as follows.

FILE *fp = fopen("newfile.txt", "rt+, ccs= encoding ");FILE *fp = fopen("newfile.txt", "rt+, ccs=encoding");

Les valeurs d' encodage autorisées sont Unicode, UTF-8et UTF-16LE.Allowed values of encoding are UNICODE, UTF-8, and UTF-16LE.

Lorsqu’un fichier est ouvert en mode Unicode, les fonctions d’entrée traduisent les données lues à partir du fichier en données UTF-16 stockées en tant que type wchar_t.When a file is opened in Unicode mode, input functions translate the data that's read from the file into UTF-16 data stored as type wchar_t. Les fonctions qui écrivent dans un fichier ouvert en mode Unicode attendent des mémoires tampons qui contiennent des données UTF-16 stockées en tant que type wchar_t.Functions that write to a file opened in Unicode mode expect buffers that contain UTF-16 data stored as type wchar_t. Si le fichier est encodé au format UTF-8, les données UTF-16 sont traduites en UTF-8 lors de leur écriture et le contenu du fichier encodé au format UTF-8 est traduit en UTF-16 lorsqu'il est lu.If the file is encoded as UTF-8, then UTF-16 data is translated into UTF-8 when it is written, and the file's UTF-8-encoded content is translated into UTF-16 when it is read. Toute tentative de lecture ou d'écriture d'un nombre impair d'octets en mode Unicode provoque une erreur de validation de paramètre .An attempt to read or write an odd number of bytes in Unicode mode causes a parameter validation error. Pour lire ou écrire des données stockées dans votre programme au format UTF-8, utilisez un mode de fichier binaire ou texte au lieu d'un mode Unicode.To read or write data that's stored in your program as UTF-8, use a text or binary file mode instead of a Unicode mode. Vous êtes responsable de toute traduction d'encodage nécessaire.You are responsible for any required encoding translation.

Si le fichier existe déjà et qu'il est ouvert pour lecture ou ajout, la marque d'ordre d'octet (BOM, Byte Order Mark), si elle est présente dans le fichier, détermine l'encodage.If the file already exists and is opened for reading or appending, the Byte Order Mark (BOM), if it present in the file, determines the encoding. L’encodage BOM est prioritaire sur l’encodage spécifié par l’indicateur CCS .The BOM encoding takes precedence over the encoding that is specified by the ccs flag. L’encodage CCS est utilisé uniquement si aucune marque Bom n’est présente ou si le fichier est un nouveau fichier.The ccs encoding is only used when no BOM is present or the file is a new file.

Notes

La détection de la nomenclature s’applique uniquement aux fichiers ouverts en mode Unicode (autrement dit, en passant l’indicateur CCS ).BOM detection only applies to files that are opened in Unicode mode (that is, by passing the ccs flag).

Le tableau suivant résume les modes utilisés pour différents indicateurs CCS donnés à fopen et les marques d’ordre d’octet dans le fichier.The following table summarizes the modes that are used for various ccs flags given to fopen and Byte Order Marks in the file.

Encodages utilisés selon l'indicateur ccs et la marque BOMEncodings Used Based on ccs Flag and BOM

indicateur CCSccs flag Aucune marque BOM (ou nouveau fichier)No BOM (or new file) BOM UTF-8BOM: UTF-8 BOM UTF-16BOM: UTF-16
UNICODEUNICODE UTF-16LEUTF-16LE UTF-8UTF-8 UTF-16LEUTF-16LE
UTF-8UTF-8 UTF-8UTF-8 UTF-8UTF-8 UTF-16LEUTF-16LE
UTF-16LEUTF-16LE UTF-16LEUTF-16LE UTF-8UTF-8 UTF-16LEUTF-16LE

Une marque BOM est écrite automatiquement dans les fichiers ouverts pour écriture en mode Unicode.Files opened for writing in Unicode mode have a BOM written to them automatically.

Si le mode est «a, CCS = Encoding » , fopen tente d’abord d’ouvrir le fichier à l’aide de l’accès en lecture et en écriture.If mode is "a, ccs=encoding", fopen first tries to open the file by using both read and write access. Si l'opération réussit, la fonction lit la marque BOM pour déterminer l'encodage du fichier ; si elle échoue, la fonction utilise l'encodage par défaut pour le fichier.If this succeeds, the function reads the BOM to determine the encoding for the file; if this fails, the function uses the default encoding for the file. Dans les deux cas, fopen réouvre le fichier à l’aide de l’accès en écriture seule.In either case, fopen will then re-open the file by using write-only access. (Cela s’applique uniquement au mode « , et non au mode «a +» .)(This applies to "a" mode only, not to "a+" mode.)

Mappages de routines de texte génériqueGeneric-Text Routine Mappings

Routine TCHAR.HTCHAR.H routine _UNICODE et _MBCS non définis_UNICODE & _MBCS not defined _MBCS défini_MBCS defined _UNICODE défini_UNICODE defined
_tfopen_tfopen fopenfopen fopenfopen _wfopen_wfopen

Le mode chaîne de caractères spécifie le type d’accès demandé pour le fichier, comme suit.The character string mode specifies the kind of access that is requested for the file, as follows.

modemode AccessAccess
"r""r" Ouvre pour l'accès en lecture.Opens for reading. Si le fichier n’existe pas ou est introuvable, l’appel fopen échoue.If the file does not exist or cannot be found, the fopen call fails.
"w""w" Ouvre un fichier vide pour l'accès en écriture.Opens an empty file for writing. Si le fichier spécifié existe, son contenu est détruit.If the given file exists, its contents are destroyed.
"a""a" S'ouvre pour écriture à la fin du fichier (ajout) sans supprimer le marqueur de fin de fichier (EOF) avant que de nouvelles données soient écrites dans le fichier.Opens for writing at the end of the file (appending) without removing the end-of-file (EOF) marker before new data is written to the file. Crée le fichier s'il n'existe pas.Creates the file if it does not exist.
"r+""r+" Ouvre pour l'accès en lecture et en écriture.Opens for both reading and writing. Le fichier doit exister.The file must exist.
"w+""w+" Ouvre un fichier vide pour l'accès en lecture et en écriture.Opens an empty file for both reading and writing. Si le fichier existe, son contenu est détruit.If the file exists, its contents are destroyed.
"a+""a+" S'ouvre pour lecture et ajout.Opens for reading and appending. L'opération d'ajout inclut la suppression du marqueur EOF avant que de nouvelles données soient écrites dans le fichier.The appending operation includes the removal of the EOF marker before new data is written to the file. Le marqueur EOF n'est pas restauré une fois l'écriture terminée.The EOF marker is not restored after writing is completed. Crée le fichier s'il n'existe pas.Creates the file if it does not exist.

Quand un fichier est ouvert en utilisant le type d’accès «a» ou le type d’accès «a +» , toutes les opérations d’écriture se produisent à la fin du fichier.When a file is opened by using the "a" access type or the "a+" access type, all write operations occur at the end of the file. Le pointeur de fichier peut être repositionné à l’aide de fseek ou rembobiner, mais il est toujours redéplacé à la fin du fichier avant toute opération d’écriture.The file pointer can be repositioned by using fseek or rewind, but is always moved back to the end of the file before any write operation is performed. Par conséquent, les données existantes ne peuvent pas être remplacées.Therefore, existing data cannot be overwritten.

Le mode «a» ne supprime pas le marqueur EOF avant d’être ajouté au fichier.The "a" mode does not remove the EOF marker before it appends to the file. Après l'ajout, la commande MS-DOS TYPE affiche uniquement les données jusqu'au marqueur EOF d'origine, et non les données ajoutées au fichier.After appending has occurred, the MS-DOS TYPE command only shows data up to the original EOF marker and not any data appended to the file. Avant d’être ajouté au fichier, le mode «a +» supprime le marqueur EOF.Before it appends to the file, the "a+" mode does remove the EOF marker. Après l'ajout, la commande MS-DOS TYPE affiche toutes les données du fichier.After appending, the MS-DOS TYPE command shows all data in the file. Le mode «a +» est requis pour l’ajout à un fichier de flux qui se termine par le marqueur EOF Ctrl + Z.The "a+" mode is required for appending to a stream file that is terminated with the CTRL+Z EOF marker.

Quand le type d’accès "r +" , "w +" ou "a +" est spécifié, la lecture et l’écriture sont activées (on dit que le fichier est ouvert pour la «mise à jour»).When the "r+", "w+", or "a+" access type is specified, both reading and writing are enabled (the file is said to be open for "update"). Toutefois, lorsque vous basculez de la lecture à l'écriture, l'opération d'entrée doit rencontrer un marqueur EOF.However, when you switch from reading to writing, the input operation must encounter an EOF marker. S'il n'existe aucun marqueur EOF, vous devez utiliser un appel à une fonctionnalité de positionnement de fichier.If there is no EOF, you must use an intervening call to a file positioning function. Les fonctions de positionnement de fichier sont fsetpos, fseeket Rewind.The file positioning functions are fsetpos, fseek, and rewind. Quand vous passez de l’écriture à la lecture, vous devez utiliser un appel intermédiaire à fflush ou à une fonction de positionnement de fichier.When you switch from writing to reading, you must use an intervening call to either fflush or to a file positioning function.

Outre les valeurs précédentes, les caractères suivants peuvent être ajoutés au mode pour spécifier le mode de traduction pour les caractères de saut de ligne.In addition to the earlier values, the following characters can be appended to mode to specify the translation mode for newline characters.

modificateur de modemode modifier Mode de traductionTranslation mode
tt Ouvrir en mode texte (traduit).Open in text (translated) mode.
bb Ouvrir en mode binaire (non traduit); les traductions qui impliquent des caractères de retour chariot et de saut de ligne sont supprimées.Open in binary (untranslated) mode; translations involving carriage-return and line feed characters are suppressed.

En mode texte, CTRL + Z est interprété comme un caractère EOF en entrée.In text mode, CTRL+Z is interpreted as an EOF character on input. Dans les fichiers ouverts en lecture/écriture à l’aide de «a +» , fopen recherche un Ctrl + Z à la fin du fichier et le supprime, si possible.In files that are opened for reading/writing by using "a+", fopen checks for a CTRL+Z at the end of the file and removes it, if it is possible. Cela est dû au fait que l’utilisation de fseek et ftell pour se déplacer dans un fichier qui se termine par Ctrl + Z peut provoquer un comportement incorrect de fseek près de la fin du fichier.This is done because using fseek and ftell to move within a file that ends with CTRL+Z may cause fseek to behave incorrectly near the end of the file.

En mode texte, les combinaisons retour chariot-saut de ligne sont traduites en flux à ligne unique en entrée, et les caractères de saut de ligne sont traduits en combinaisons retour chariot-saut de ligne en sortie.In text mode, carriage return-line feed combinations are translated into single line feeds on input, and line feed characters are translated to carriage return-line feed combinations on output. Lorsqu'une fonction d'E/S de flux Unicode s'exécute en mode texte (comportement par défaut), on suppose que le flux source ou de destination est une séquence de caractères multioctets.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. Par conséquent, les fonctions d’entrée de flux Unicode convertissent les caractères multioctets en caractères larges (comme après un appel à la fonction mbtowc).Therefore, the Unicode stream-input functions convert multibyte characters to wide characters (as if by a call to the mbtowc function). Pour la même raison, les fonctions de flux de sortie Unicode convertissent les caractères larges en caractères multioctets (comme après un appel à la fonction wctomb).For the same reason, the Unicode stream-output functions convert wide characters to multibyte characters (as if by a call to the wctomb function).

Si t ou b n’est pas spécifié en mode, le mode de traduction par défaut est défini par la variable globale _fmode.If t or b is not given in mode, the default translation mode is defined by the global variable _fmode. Si t ou b est préfixé à l’argument, la fonction échoue et retourne la valeur null.If t or b is prefixed to the argument, the function fails and returns NULL.

Pour plus d’informations sur la façon d’utiliser les modes texte et binaire dans les E/S de flux multioctets et Unicode, consultez Text and Binary Mode File I/O et E/S de flux Unicode en modes texte et binaire.For more information about how to use text and binary modes in Unicode and multibyte stream-I/O, see Text and Binary Mode File I/O and Unicode Stream I/O in Text and Binary Modes.

Les options suivantes peuvent être ajoutées au mode pour spécifier des comportements supplémentaires.The following options can be appended to mode to specify additional behaviors.

modificateur de modemode modifier ComportementBehavior
cc Activez l’indicateur de validation pour le nom de fichier associé afin que le contenu de la mémoire tampon de fichier soit écrit directement sur le disque si fflush ou _flushall est appelé.Enable the commit flag for the associated filename so that the contents of the file buffer are written directly to disk if either fflush or _flushall is called.
nn Réinitialiser l’indicateur de validation pour le nom de fichier associé sur «no-commit».Reset the commit flag for the associated filename to "no-commit." Il s'agit de la valeur par défaut.This is the default. Substitue également l'indicateur de validation global si vous liez votre programme avec COMMODE.OBJ.It also overrides the global commit flag if you link your program with COMMODE.OBJ. La valeur par défaut de l’indicateur de validation globale est « no-commit », sauf si vous liez explicitement votre programme avec COMMODE.OBJ (consultez Link Options).The global commit flag default is "no-commit" unless you explicitly link your program with COMMODE.OBJ (see Link Options).
NN Indique que le fichier n'est pas hérité par les processus enfants.Specifies that the file is not inherited by child processes.
SS Indique que la mise en cache est optimisée pour, mais non limitée à, l'accès séquentiel à partir du disque.Specifies that caching is optimized for, but not restricted to, sequential access from disk.
RR Indique que la mise en cache est optimisée pour, mais non limitée à, l'accès aléatoire à partir du disque.Specifies that caching is optimized for, but not restricted to, random access from disk.
TT Spécifie un fichier comme temporaire.Specifies a file as temporary. Si possible, il n'est pas vidé sur disque.If possible, it is not flushed to disk.
DD Spécifie un fichier comme temporaire.Specifies a file as temporary. Il est supprimé lorsque le dernier pointeur de fichier est fermé.It is deleted when the last file pointer is closed.
ccs= encodingccs=encoding Spécifie le jeu de caractères codé à utiliser (l’un des UTF-8, UTF-16LEou Unicode) pour ce fichier.Specifies the encoded character set to use (one of UTF-8, UTF-16LE, or UNICODE) for this file. Laissez ce paramètre non spécifié si vous souhaitez bénéficier de l'encodage ANSI.Leave unspecified if you want ANSI encoding.

Les caractères valides pour la chaîne de mode utilisée dans fopen et _fdopen correspondent aux arguments Oflag utilisés dans _open et _sopen, comme suit.Valid characters for the mode string that is used in fopen and _fdopen correspond to oflag arguments that are used in _open and _sopen, as follows.

Caractères dans la chaîne de modeCharacters in mode string Valeur Oflag équivalente _pour Open_/sopenEquivalent oflag value for _open/_sopen
aa _O_WRONLY | | oappend_(généralement o WRONLY o Create _ __ | __ _ O_Append)_O_WRONLY | _O_APPEND (usually _O_WRONLY | _O_CREAT | _O_APPEND)
a+a+ _O_RDWR | | oappend_(généralement o RDWR o append _ __ | __ _ O_Create )_O_RDWR | _O_APPEND (usually _O_RDWR | _O_APPEND | _O_CREAT )
rr _O_RDONLY_O_RDONLY
r+r+ _O_RDWR_O_RDWR
ww _O_WRONLY (généralement _oWRONLY_ | | o Create o_trunc)_ ___O_WRONLY (usually _O_WRONLY | _O_CREAT | _O_TRUNC)
w+w+ _O_RDWR (généralement _oRDWR_ | | o Create o_trunc)_ ___O_RDWR (usually _O_RDWR | _O_CREAT | _O_TRUNC)
bb _BINAIRE_O_O_BINARY
tt _O_TEXT_O_TEXT
cc AucunNone
nn AucunNone
SS _O_SÉQUENTIEL_O_SEQUENTIAL
RR _O_ALÉATOIRE_O_RANDOM
TT _O_SHORTLIVED_O_SHORTLIVED
DD _O_TEMPORAIRE_O_TEMPORARY
ccs=UNICODEccs=UNICODE _O_WTEXT_O_WTEXT
ccs=UTF-8ccs=UTF-8 _O_UTF8_O_UTF8
CCS = UTF-16LEccs=UTF-16LE _O_UTF16_O_UTF16

Si vous utilisez le mode RB , vous n’avez pas besoin de porter votre code, et si vous prévoyez de lire la majeure partie d’un fichier volumineux ou que vous ne vous inquiétez pas des performances du réseau, vous pouvez également envisager d’utiliser des fichiers Win32 mappés en mémoire en tant qu’option.If you are using rb mode, you do not have to port your code, and if you expect to read most of a large file or are not concerned about network performance, you might also consider whether to use memory mapped Win32 files as an option.

Configuration requiseRequirements

FonctionFunction En-tête requisRequired header
fopenfopen <stdio.h><stdio.h>
_wfopen_wfopen <stdio.h> ou <wchar.h><stdio.h> or <wchar.h>

_wfopen est une extension Microsoft._wfopen is a Microsoft extension. Pour plus d'informations sur la compatibilité, consultez Compatibilité.For more information about compatibility, see Compatibility.

Les options c, n, t, S, R, tet en mode D sont des extensions Microsoft pour fopen et _fdopen et ne doivent pas être utilisées là où la portabilité ANSI est souhaitée.The c, n, t, S, R, T, and D mode options are Microsoft extensions for fopen and _fdopen and should not be used where ANSI portability is desired.

Exemple 1Example 1

Le programme suivant ouvre deux fichiers.The following program opens two files. Elle utilise fclose pour fermer le premier fichier et _fcloseall pour fermer tous les fichiers restants.It uses fclose to close the first file and _fcloseall to close all remaining files.

// crt_fopen.c
// compile with: /W3
// This program opens two files. It uses
// fclose to close the first file and
// _fcloseall to close all remaining files.

#include <stdio.h>

FILE *stream, *stream2;

int main( void )
{
   int numclosed;

   // Open for read (will fail if file "crt_fopen.c" does not exist)
   if( (stream  = fopen( "crt_fopen.c", "r" )) == NULL ) // C4996
   // Note: fopen is deprecated; consider using fopen_s instead
      printf( "The file 'crt_fopen.c' was not opened\n" );
   else
      printf( "The file 'crt_fopen.c' was opened\n" );

   // Open for write
   if( (stream2 = fopen( "data2", "w+" )) == NULL ) // C4996
      printf( "The file 'data2' was not opened\n" );
   else
      printf( "The file 'data2' was opened\n" );

   // Close stream if it is not NULL
   if( stream)
   {
      if ( fclose( stream ) )
      {
         printf( "The file 'crt_fopen.c' was not closed\n" );
      }
   }

   // All other files are closed:
   numclosed = _fcloseall( );
   printf( "Number of files closed by _fcloseall: %u\n", numclosed );
}
The file 'crt_fopen.c' was opened
The file 'data2' was opened
Number of files closed by _fcloseall: 1

Exemple 2Example 2

Le programme suivant crée un fichier (ou le remplace s'il existe), en mode texte avec encodage Unicode.The following program creates a file (or overwrites one if it exists), in text mode that has Unicode encoding. Il écrit ensuite deux chaînes dans le fichier et ferme le fichier.It then writes two strings into the file and closes the file. La sortie est un fichier nommé _wfopen_test.xml, qui contient les données de la section de sortie.The output is a file named _wfopen_test.xml, which contains the data from the output section.

// crt__wfopen.c
// compile with: /W3
// This program creates a file (or overwrites one if
// it exists), in text mode using Unicode encoding.
// It then writes two strings into the file
// and then closes the file.

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

#define BUFFER_SIZE 50

int main(int argc, char** argv)
{
    wchar_t str[BUFFER_SIZE];
    size_t  strSize;
    FILE*   fileHandle;

    // Create an the xml file in text and Unicode encoding mode.
    if ((fileHandle = _wfopen( L"_wfopen_test.xml",L"wt+,ccs=UNICODE")) == NULL) // C4996
    // Note: _wfopen is deprecated; consider using _wfopen_s instead
    {
        wprintf(L"_wfopen failed!\n");
        return(0);
    }

    // Write a string into the file.
    wcscpy_s(str, sizeof(str)/sizeof(wchar_t), L"<xmlTag>\n");
    strSize = wcslen(str);
    if (fwrite(str, sizeof(wchar_t), strSize, fileHandle) != strSize)
    {
        wprintf(L"fwrite failed!\n");
    }

    // Write a string into the file.
    wcscpy_s(str, sizeof(str)/sizeof(wchar_t), L"</xmlTag>");
    strSize = wcslen(str);
    if (fwrite(str, sizeof(wchar_t), strSize, fileHandle) != strSize)
    {
        wprintf(L"fwrite failed!\n");
    }

    // Close the file.
    if (fclose(fileHandle))
    {
        wprintf(L"fclose failed!\n");
    }
    return 0;
}

Voir aussiSee also

E/S de fluxStream I/O
Interprétation des séquences de caractères multi-octetsInterpretation of Multibyte-Character Sequences
fclose, _fcloseallfclose, _fcloseall
_fdopen, _wfdopen_fdopen, _wfdopen
ferrorferror
_fileno_fileno
freopen, _wfreopenfreopen, _wfreopen
_open, _wopen_open, _wopen
_setmode_setmode
_sopen, _wsopen_sopen, _wsopen