fopen, _wfopenfopen, _wfopen

Abre un archivo.Opens a file. Hay disponibles versiones más seguras de estas funciones que realizan una validación de parámetros adicional y devuelven códigos de error; consulte 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.

SintaxisSyntax

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

ParámetrosParameters

filenamefilename
Nombre de archivo.File name.

modemode
Tipo de acceso habilitado.Kind of access that's enabled.

Valor devueltoReturn Value

Cada una de estas funciones devuelve un puntero al archivo abierto.Each of these functions returns a pointer to the open file. Un valor de puntero null indica un error.A null pointer value indicates an error. Si filename o mode es null o una cadena vacía, estas funciones desencadenan el controlador de parámetros no válidos, que se describe en validación de parámetros.If filename or mode is NULL or an empty string, these functions trigger the invalid parameter handler, which is described in Parameter Validation. Si la ejecución puede continuar, estas funciones devuelven null y establecen errno en EINVAL.If execution is allowed to continue, these functions return NULL and set errno to EINVAL.

Para obtener más información, consulte errno, _doserrno, _sys_errlist y _sys_nerr.For more information, see errno, _doserrno, _sys_errlist, and _sys_nerr.

ObservacionesRemarks

La función fopen abre el archivo especificado por filename.The fopen function opens the file that is specified by filename. De forma predeterminada, una cadena de nombre de archivo estrecha se interpreta mediante la página de códigos ANSI (CP_ACP).By default, a narrow filename string is interpreted using the ANSI codepage (CP_ACP). En las aplicaciones de escritorio de Windows, se puede cambiar a la página de códigos del OEM (CP_OEMCP) con la función SetFileApisToOEM .In Windows Desktop applications this can be changed to the OEM codepage (CP_OEMCP) by using the SetFileApisToOEM function. Puede usar la función AreFileApisANSI para determinar si filename se interpreta mediante ANSI o la página de códigos OEM predeterminada del sistema.You can use the AreFileApisANSI function to determine whether filename is interpreted using the ANSI or the system default OEM codepage. _wfopen es una versión con caracteres anchos de fopen; los argumentos para _wfopen son cadenas de caracteres anchos._wfopen is a wide-character version of fopen; the arguments to _wfopen are wide-character strings. De lo contrario, _wfopen y fopen se comportan exactamente igual.Otherwise, _wfopen and fopen behave identically. El uso de _wfopen no afecta al Juego de caracteres codificado que se usa en la secuencia de archivos.Just using _wfopen does not affect the coded character set that is used in the file stream.

fopen acepta rutas de acceso que son válidas en el sistema de archivos en el momento de la ejecución; fopen acepta rutas de acceso UNC y rutas de acceso que requieren unidades de red asignadas siempre y cuando el sistema que ejecuta el código tenga acceso al recurso compartido o a la unidad asignada en el momento de la ejecución.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. Cuando construya rutas de fopen, asegúrese de que las unidades, rutas de acceso o recursos compartidos de red estarán disponibles en el entorno de ejecución.When you construct paths for fopen, make sure that drives, paths, or network shares will be available in the execution environment. Puede usar barras diagonales (/) o barras diagonales inversas (\) como separadores de directorio en una ruta de acceso.You can use either forward slashes (/) or backslashes (\) as the directory separators in a path.

Compruebe siempre el valor devuelto para ver si el puntero es NULL antes de realizar ninguna otra operación en el archivo.Always check the return value to see whether the pointer is NULL before you perform any additional operations on the file. Si se produce un error, se establece la variable global errno y se puede usar para obtener información específica del error.If an error occurs, the global variable errno is set and may be used to obtain specific error information. Para obtener más información, consulte errno, _doserrno, _sys_errlist y _sys_nerr.For more information, see errno, _doserrno, _sys_errlist, and _sys_nerr.

De forma predeterminada, el ámbito de este estado global de esta función es la aplicación.By default, this function's global state is scoped to the application. Para cambiar esto, vea estado global en CRT.To change this, see Global state in the CRT.

Compatibilidad con UnicodeUnicode Support

fopen admite secuencias de archivo Unicode.fopen supports Unicode file streams. Para abrir un archivo Unicode, pase una marca de CCS que especifique la codificación deseada a fopen, como se indica a continuación.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");

Los valores permitidos de Encoding son Unicode, UTF-8 y UTF-16LE.Allowed values of encoding are UNICODE, UTF-8, and UTF-16LE.

Cuando un archivo se abre en modo Unicode, las funciones de entrada traducen los datos leídos del archivo a datos UTF-16 almacenados como tipo 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. Las funciones que escriben en un archivo abierto en modo Unicode esperan búferes que contengan datos UTF-16 almacenados como de tipo 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 el archivo está codificado como UTF-8, los datos UTF-16 se traducen a UTF-8 cuando se escriben, y el contenido codificado en UTF-8 del archivo se traduce a UTF-16 cuando se lee.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. Si se intenta leer o escribir un número impar de bytes en el modo Unicode, se producirá un error de validación de parámetros .An attempt to read or write an odd number of bytes in Unicode mode causes a parameter validation error. Para leer o escribir datos almacenados en el programa como UTF-8, use un modo de archivo binario o de texto en lugar de un modo 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. Cualquier traducción de codificación que sea necesaria es su responsabilidad.You are responsible for any required encoding translation.

Si el archivo ya existe y está abierto para lectura o para anexar, la marca de orden de bytes (BOM), si está presente en el archivo, determina la codificación.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. La codificación de BOM tiene prioridad sobre la codificación especificada por la marca CCS .The BOM encoding takes precedence over the encoding that is specified by the ccs flag. La codificación CCS solo se usa cuando no hay Bom presente o el archivo es un archivo nuevo.The ccs encoding is only used when no BOM is present or the file is a new file.

Nota

La detección de BOM solo se aplica a los archivos abiertos en modo Unicode (es decir, pasando la marca CCS ).BOM detection only applies to files that are opened in Unicode mode (that is, by passing the ccs flag).

En la tabla siguiente se resumen los modos que se usan para las distintas marcas de CCS dadas a fopen y las marcas de orden de bytes en el archivo.The following table summarizes the modes that are used for various ccs flags given to fopen and Byte Order Marks in the file.

Codificaciones utilizadas basadas en el indicador de ccs y BOMEncodings Used Based on ccs Flag and BOM

marca de CCSccs flag Ninguna BOM (o archivo nuevo)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

Los archivos abiertos para escribir en el modo Unicode tienen una BOM escriba automáticamente.Files opened for writing in Unicode mode have a BOM written to them automatically.

Si el modo es "a, CCS =Encoding", fopen primero intenta abrir el archivo con acceso de lectura y escritura.If mode is "a, ccs=encoding", fopen first tries to open the file by using both read and write access. Si esto se realiza correctamente, la función lee la BOM para determinar la codificación del archivo; si da error, la función utiliza la codificación predeterminada del archivo.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. En cualquier caso, fopen volverá a abrir el archivo con acceso de solo escritura.In either case, fopen will then re-open the file by using write-only access. (Esto solo se aplica al modo "a" , no al modo "a +" ).(This applies to "a" mode only, not to "a+" mode.)

Asignaciones de rutina de texto genéricoGeneric-Text Routine Mappings

Rutina TCHAR.HTCHAR.H routine _UNICODE y _MBCS no definidos_UNICODE & _MBCS not defined _MBCS definido_MBCS defined _UNICODE definido_UNICODE defined
_tfopen_tfopen fopenfopen fopenfopen _wfopen_wfopen

El modo de cadena de caracteres especifica el tipo de acceso solicitado para el archivo, como se indica a continuación.The character string mode specifies the kind of access that is requested for the file, as follows.

modemode AccessAccess
c"r" Abre para lectura.Opens for reading. Si el archivo no existe o no se encuentra, se produce un error en la llamada fopen .If the file does not exist or cannot be found, the fopen call fails.
con"w" Abre un archivo vacío para escritura.Opens an empty file for writing. Si el archivo especificado existe, se destruye su contenido.If the given file exists, its contents are destroyed.
un"a" Abre para escritura al final del archivo (anexo) sin eliminar el marcador de fin de archivo (EOF) antes de que se escriban nuevos datos en el archivo.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. Crea el archivo si no existe.Creates the file if it does not exist.
"r +""r+" Abre para lectura y escritura.Opens for both reading and writing. El archivo debe existir.The file must exist.
"w +""w+" Abre un archivo vacío para lectura y escritura.Opens an empty file for both reading and writing. Si el archivo existe, se destruye su contenido.If the file exists, its contents are destroyed.
"a +""a+" Se abre para lectura y anexado.Opens for reading and appending. La operación de anexado incluye la eliminación del marcador EOF antes de que los nuevos datos se escriban en el archivo.The appending operation includes the removal of the EOF marker before new data is written to the file. El marcador EOF no se restablece una vez completada la escritura.The EOF marker is not restored after writing is completed. Crea el archivo si no existe.Creates the file if it does not exist.

Cuando un archivo se abre mediante el tipo de acceso "a" o el tipo de acceso "a +" , todas las operaciones de escritura se producen al final del archivo.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. El puntero de archivo se puede cambiar de posición mediante fseek o rebobinar, pero siempre se mueve al final del archivo antes de que se realice cualquier operación de escritura.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. Por consiguiente, los datos existentes no pueden sobrescribirse.Therefore, existing data cannot be overwritten.

El modo "a" no quita el marcador EOF antes de que se anexe al archivo.The "a" mode does not remove the EOF marker before it appends to the file. Una vez realizado el anexado, el comando TYPE de MS-DOS solo muestra los datos hasta el marcador EOF original, y no los datos anexados al archivo.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. Antes de que se anexe al archivo, el modo "a +" quita el marcador EOF.Before it appends to the file, the "a+" mode does remove the EOF marker. Después de anexar, el comando TYPE de MS-DOS muestra todos los datos del archivo.After appending, the MS-DOS TYPE command shows all data in the file. El modo "a +" es necesario para anexar a un archivo de secuencia que termina con el marcador EOF Ctrl + Z.The "a+" mode is required for appending to a stream file that is terminated with the CTRL+Z EOF marker.

Cuando se especifica el tipo de acceso "r +", "w +" o "a +" , se habilitan la lectura y la escritura (se dice que el archivo está abierto para "actualización").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"). Sin embargo, cuando cambie de lectura a la escritura, la operación de entrada debe encontrar un marcador EOF.However, when you switch from reading to writing, the input operation must encounter an EOF marker. Si no hay ningún EOF, debe utilizar una llamada intermedia a una función de posición del archivo.If there is no EOF, you must use an intervening call to a file positioning function. Las funciones de posición de archivo son fsetpos, fseeky Rewind.The file positioning functions are fsetpos, fseek, and rewind. Cuando cambie de escritura a lectura, debe usar una llamada intermedia a fflush o a una función de posicionamiento de archivo.When you switch from writing to reading, you must use an intervening call to either fflush or to a file positioning function.

Además de los valores anteriores, los caracteres siguientes se pueden anexar al modo para especificar el modo de traducción de los caracteres de nueva línea.In addition to the earlier values, the following characters can be appended to mode to specify the translation mode for newline characters.

modificador de modomode modifier Modo de traducciónTranslation mode
tt Abra en modo de texto (traducido).Open in text (translated) mode.
bb Abrir en modo binario (sin traducir); se suprimen las traducciones que implican caracteres de retorno de carro y avance de línea.Open in binary (untranslated) mode; translations involving carriage-return and line feed characters are suppressed.

En el modo de texto, CTRL + Z se interpreta como un carácter EOF en la entrada.In text mode, CTRL+Z is interpreted as an EOF character on input. En los archivos abiertos para lectura/escritura mediante "a +", FOPEN comprueba un Ctrl + Z al final del archivo y lo quita, si es posible.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. Esto se hace porque el uso de fseek y ftell para desplace dentro de un archivo que finaliza con Ctrl + Z puede hacer que fseek se comporte de forma incorrecta cerca del final del archivo.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 el modo de texto, las combinaciones de retorno de carro y avance de línea se traducen en fuentes de una sola línea en la entrada, y los caracteres de avance de línea se traducen en combinaciones de retorno de carro y avance de línea en la salida.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. Cuando una función de E/S de flujo Unicode funciona en el modo de texto (valor predeterminado), se asume que el flujo de origen o de destino son una secuencia de caracteres multibyte.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. Por consiguiente, las funciones de entrada de secuencias Unicode convierten los caracteres multibyte en caracteres anchos (como si se realizara una llamada a la función mbtowc).Therefore, the Unicode stream-input functions convert multibyte characters to wide characters (as if by a call to the mbtowc function). Por la misma razón, las funciones de salida de secuencias Unicode convierten los caracteres anchos en caracteres multibyte (como si se realizara una llamada a la función 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 o b no se especifican en el modo, el modo de traducción predeterminado se define mediante la variable global _fmode.If t or b is not given in mode, the default translation mode is defined by the global variable _fmode. Si t o b tiene como prefijo el argumento, la función produce un error y devuelve null.If t or b is prefixed to the argument, the function fails and returns NULL.

Para más información sobre cómo utilizar los modos binario y de texto en Unicode y la E/S de flujo multibyte, vea Text and Binary Mode File I/O y E/S de secuencias Unicode en los modos binario y de texto.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.

Las siguientes opciones se pueden anexar al modo para especificar comportamientos adicionales.The following options can be appended to mode to specify additional behaviors.

modificador de modomode modifier ComportamientoBehavior
xx Fuerza a la función a producir un error si el nombre de archivo ya existe.Forces the function to fail if filename already exists. Solo se puede usar con los especificadores "w" o "w +".Can only be used with the "w" or "w+" specifiers.
cc Habilite la marca de confirmación para el nombre de archivo asociado para que el contenido del búfer de archivo se escriba directamente en el disco si se llama a fflush o _flushall .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 Restablezca la marca de confirmación para el nombre de archivo asociado a "no-commit".Reset the commit flag for the associated filename to "no-commit." Este es el valor predeterminado.This is the default. También invalida la marca global de confirmación si vincula el programa a COMMODE.OBJ.It also overrides the global commit flag if you link your program with COMMODE.OBJ. El valor predeterminado de la marca de confirmación global es "no-commit", a menos que vincule explícitamente el programa a COMMODE.OBJ (vea Opciones de vínculo).The global commit flag default is "no-commit" unless you explicitly link your program with COMMODE.OBJ (see Link Options).
N.N Especifica que el archivo no se hereda mediante procesos secundarios.Specifies that the file is not inherited by child processes.
SS Especifica que el almacenamiento en caché está optimizado para el acceso secuencial (pero no restringido a este) desde el disco.Specifies that caching is optimized for, but not restricted to, sequential access from disk.
RR Especifica que el almacenamiento en caché está optimizado para el acceso aleatorio (pero no restringido a este) desde el disco.Specifies that caching is optimized for, but not restricted to, random access from disk.
TT Especifica un archivo como temporal.Specifies a file as temporary. Si es posible, no se vuelca en el disco.If possible, it is not flushed to disk.
DD Especifica un archivo como temporal.Specifies a file as temporary. Se elimina cuando se cierra el puntero del último archivo.It is deleted when the last file pointer is closed.
ccs=encodingccs=encoding Especifica el juego de caracteres codificado que se va a usar (uno de UTF-8, UTF-16LE o Unicode) para este archivo.Specifies the encoded character set to use (one of UTF-8, UTF-16LE, or UNICODE) for this file. Deje sin especificar si desea la codificación ANSI.Leave unspecified if you want ANSI encoding.

Los caracteres válidos para la cadena de modo que se usa en fopen y _fdopen corresponden a los argumentos oflag que se usan en _open y _sopen, como se indica a continuación.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.

Caracteres en cadena de modoCharacters in mode string Valor de Oflag equivalente para _ Open/ _ sopenEquivalent oflag value for _open/_sopen
una _ O _ WRONLY | _ o _ Append (normalmente _ o _ WRONLY | _ o _ crear | _ o _ Append)_O_WRONLY | _O_APPEND (usually _O_WRONLY | _O_CREAT | _O_APPEND)
a +a+ _ O _ RDWR | _ o _ anexar (normalmente _ o _ RDWR | _ o _ anexar | _ o _ crear )_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 (normalmente _ o _ WRONLY | _ o _ crear | _ o _ trunc)_O_WRONLY (usually _O_WRONLY | _O_CREAT | _O_TRUNC)
w +w+ _ O _ RDWR (normalmente _ o _ RDWR | _ o _ crear | _ o _ trunc)_O_RDWR (usually _O_RDWR | _O_CREAT | _O_TRUNC)
bb __binario O_O_BINARY
tt _O _ texto_O_TEXT
xx _O _ excl_O_EXCL
cc NingunoNone
nn NingunoNone
SS _O _ secuencial_O_SEQUENTIAL
RR _O _ aleatorio_O_RANDOM
TT _O _ SHORTLIVED_O_SHORTLIVED
DD _O _ temporal_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 usa el modo RB , no tiene que trasladar el código y, si espera leer la mayor parte de un archivo grande o no le preocupa el rendimiento de la red, también puede considerar si usar archivos Win32 asignados a la memoria como una opción.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.

RequisitosRequirements

FunciónFunction Encabezado necesarioRequired header
fopenfopen <stdio.h>
_wfopen_wfopen <stdio.h> o <wchar.h><stdio.h> or <wchar.h>

_wfopen es una extensión de Microsoft._wfopen is a Microsoft extension. Para obtener más información sobre la compatibilidad, vea Compatibilidad.For more information about compatibility, see Compatibility.

Las opciones de modo c, n, t, S, R, t y D son extensiones de Microsoft para fopen y _fdopen y no deben usarse cuando se desea la portabilidad ANSI.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.

Ejemplo 1Example 1

El siguiente programa abre dos archivos.The following program opens two files. Usa fclose para cerrar el primer archivo y _fcloseall cerrar todos los archivos restantes.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

Ejemplo 2Example 2

El siguiente programa crea un archivo (o sobrescribe uno si existe), en el modo de texto con codificación Unicode.The following program creates a file (or overwrites one if it exists), in text mode that has Unicode encoding. A continuación, escribe dos cadenas en el archivo y cierra el archivo.It then writes two strings into the file and closes the file. El resultado es un archivo denominado _wfopen_test.xml, que contiene los datos de la sección de salida.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;
}

Consulta tambiénSee also

E/S de secuenciaStream I/O
Interpretación de secuencias de Multibyte-CharacterInterpretation 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