E/S de secuenciaStream I/O

Estas funciones procesan datos de diferentes tamaños y formatos, desde caracteres individuales a estructuras de datos de gran tamaño.These functions process data in different sizes and formats, from single characters to large data structures. También proporcionan almacenamiento en búfer, que puede mejorar el rendimiento.They also provide buffering, which can improve performance. El tamaño predeterminado de un búfer de secuencia es 4K.The default size of a stream buffer is 4K. Estas rutinas afectan sólo a los búferes creados por las rutinas de biblioteca en tiempo de ejecución y no tienen ningún efecto en los búferes creados por el sistema operativo.These routines affect only buffers created by the run-time library routines, and have no effect on buffers created by the operating system.

Rutinas de E/S de secuenciaStream I/O Routines

RutinaRoutine UsoUse
clearerr, clearerr_sclearerr, clearerr_s Indicador de borrar error para la secuenciaClear error indicator for stream
fclosefclose Cerrar secuenciaClose stream
_fcloseall_fcloseall Cerrar todas las secuencias abiertas excepto stdin, stdout y stderrClose all open streams except stdin, stdout, and stderr
_fdopen, wfdopen_fdopen, wfdopen Asociar la secuencia con un descriptor de archivo del archivo abiertoAssociate stream with file descriptor of open file
feoffeof Prueba de fin de archivo en secuenciaTest for end of file on stream
ferrorferror Prueba de error en secuenciaTest for error on stream
fflushfflush Vaciar la secuencia en el búfer o en el dispositivo de almacenamientoFlush stream to buffer or storage device
fgetc, fgetwcfgetc, fgetwc Leer carácter de la secuencia (versiones de función de getc y getwc)Read character from stream (function versions of getc and getwc)
_fgetchar, _fgetwchar_fgetchar, _fgetwchar Leer carácter de stdin (versiones de función de getchar y getwchar)Read character from stdin (function versions of getchar and getwchar)
fgetposfgetpos Obtener el indicador de posición de la secuenciaGet position indicator of stream
fgets, fgetwsfgets, fgetws Leer cadena de la secuenciaRead string from stream
_fileno_fileno Obtener el descriptor de archivo asociado con la secuenciaGet file descriptor associated with stream
_flushall_flushall Vaciar todas las secuencias en el búfer o en el dispositivo de almacenamientoFlush all streams to buffer or storage device
fopen, _wfopen, fopen_s, _wfopen_sfopen, _wfopen, fopen_s, _wfopen_s Abrir secuenciaOpen stream
fprintf, _fprintf_l, fwprintf, _fwprintf_l, fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_lfprintf, _fprintf_l, fwprintf, _fwprintf_l, fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l Escribe datos con formato en la secuenciaWrite formatted data to stream
fputc, fputwcfputc, fputwc Escribir un carácter en una secuencia (versiones de función de putc y putwc)Write a character to a stream (function versions of putc and putwc)
_fputchar, _fputwchar_fputchar, _fputwchar Escribir carácter en stdout (versiones de función de putchar y putwchar)Write character to stdout (function versions of putchar and putwchar)
fputs, fputwsfputs, fputws Escribir cadena en la secuenciaWrite string to stream
freadfread Leer datos sin formato de la secuenciaRead unformatted data from stream
freopen, _wfreopen, freopen_s, _wfreopen_sfreopen, _wfreopen, freopen_s, _wfreopen_s Reasignar el puntero de la secuencia FILE al nuevo archivo o dispositivoReassign FILE stream pointer to new file or device
fscanf, fwscanf, fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_lfscanf, fwscanf, fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l Leer datos con formato de la secuenciaRead formatted data from stream
fseek, _fseeki64fseek, _fseeki64 Mover posición de archivo a la ubicación dadaMove file position to given location
fsetposfsetpos Establecer el indicador de posición de la secuenciaSet position indicator of stream
_fsopen, _wfsopen_fsopen, _wfsopen Abre una secuencia con uso compartido de archivos.Open stream with file sharing
ftell, _ftelli64ftell, _ftelli64 Obtener la posición del archivo actualGet current file position
fwritefwrite Escribir elementos de datos sin formato en la secuenciaWrite unformatted data items to stream
getc, getwcgetc, getwc Leer carácter de la secuencia (versiones de macro de fgetc y fgetwc)Read character from stream (macro versions of fgetc and fgetwc)
getchar, getwchargetchar, getwchar Leer carácter de stdin (versiones de macro de fgetchar y fgetwchar)Read character from stdin (macro versions of fgetchar and fgetwchar)
_getmaxstdio_getmaxstdio Devuelve el número de archivos que se permite abrir simultáneamente en el nivel de E/S de secuencia.Returns the number of simultaneously open files permitted at the stream I/O level.
gets_s, _getws_sgets_s, _getws_s Leer línea de stdinRead line from stdin
_getw_getw Leer binario int de la secuenciaRead binary int from stream
printf, _printf_l, wprintf, _wprintf_l,printf_s, _printf_s_l, wprintf_s, _wprintf_s_lprintf, _printf_l, wprintf, _wprintf_l,printf_s, _printf_s_l, wprintf_s, _wprintf_s_l Escribir datos con formato en stdoutWrite formatted data to stdout
putc, putwcputc, putwc Escribir carácter en una secuencia (versiones de macro de fputc y fputwc)Write character to a stream (macro versions of fputc and fputwc)
putchar, putwcharputchar, putwchar Escribir carácter en stdout (versiones de macro de fputchar y fputwchar)Write character to stdout (macro versions of fputchar and fputwchar)
puts, _putwsputs, _putws Escribir línea en la secuenciaWrite line to stream
_putw_putw Escribir binario int en la secuenciaWrite binary int to stream
rebobinarrewind Mover la posición de archivo al principio de la secuenciaMove file position to beginning of stream
_rmtmp_rmtmp Quitar archivos temporales creados por tmpfileRemove temporary files created by tmpfile
scanf, _scanf_l, wscanf, _wscanf_l,scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_lscanf, _scanf_l, wscanf, _wscanf_l,scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l Leer datos con formato de stdinRead formatted data from stdin
setbufsetbuf Controlar el almacenamiento en búfer de la secuenciaControl stream buffering
_setmaxstdio_setmaxstdio Establece el número de archivos que se permite abrir simultáneamente en el nivel de E/S de secuencia.Set a maximum for the number of simultaneously open files at the stream I/O level.
setvbufsetvbuf Controlar el almacenamiento en búfer de la secuencia y el tamaño del búferControl stream buffering and buffer size
_snprintf, _snwprintf, _snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l_snprintf, _snwprintf, _snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l Escribir datos con formato de la longitud especificada en la cadenaWrite formatted data of specified length to string
_snscanf, _snwscanf, _snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l_snscanf, _snwscanf, _snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l Lee los datos con formato de una longitud especificada del flujo de entrada estándar.Read formatted data of a specified length from the standard input stream.
sprintf, swprintf, sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_lsprintf, swprintf, sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l Escribir datos con formato en cadenaWrite formatted data to string
sscanf, swscanf, sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_lsscanf, swscanf, sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l Leer datos con formato de la cadenaRead formatted data from string
_tempnam, _wtempnam_tempnam, _wtempnam Generar un nombre de archivo temporal en el directorio dadoGenerate temporary filename in given directory
tmpfile, tmpfile_stmpfile, tmpfile_s Crear un archivo temporalCreate temporary file
tmpnam, _wtmpnam, tmpnam_s, _wtmpnam_stmpnam, _wtmpnam, tmpnam_s, _wtmpnam_s Generar un nombre de archivo temporalGenerate temporary filename
ungetc, ungetwcungetc, ungetwc Insertar el carácter de nuevo en la secuenciaPush character back onto stream
_vcprintf, _vcwprintf, _vcprintf_s, _vcprintf_s_l, _vcwprintf_s, _vcwprintf_s_l_vcprintf, _vcwprintf, _vcprintf_s, _vcprintf_s_l, _vcwprintf_s, _vcwprintf_s_l Escribir datos con formato en la consola.Write formatted data to the console.
vfprintf, vfwprintf, vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_lvfprintf, vfwprintf, vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l Escribe datos con formato en la secuenciaWrite formatted data to stream
vprintf, vwprintf, vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_lvprintf, vwprintf, vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l Escribir datos con formato en stdoutWrite formatted data to stdout
_vsnprintf, _vsnwprintf, vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l_vsnprintf, _vsnwprintf, vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l Escribir datos con formato de la longitud especificada en el búferWrite formatted data of specified length to buffer
vsprintf, vswprintf, vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_lvsprintf, vswprintf, vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l Escribir datos con formato en el búferWrite formatted data to buffer

Cuando un programa inicia la ejecución, el código de inicio abre automáticamente varias secuencias: entrada estándar (señalada por stdin), salida estándar (señalada por stdout) y errores estándar (señalada por stderr).When a program begins execution, the startup code automatically opens several streams: standard input (pointed to by stdin), standard output (pointed to by stdout), and standard error (pointed to by stderr). Estas secuencias se dirigen a la consola (teclado y pantalla) de forma predeterminada.These streams are directed to the console (keyboard and screen) by default. Use freopen para redirigir stdin, stdout o stderr a un archivo de disco o un dispositivo.Use freopen to redirect stdin, stdout, or stderr to a disk file or a device.

Los archivos abiertos con las rutinas de secuencia se almacenan en búfer de forma predeterminada.Files opened using the stream routines are buffered by default. Las funciones stdout y stderr se vacían siempre que están llenas o, si está escribiendo en un dispositivo de caracteres, tras cada llamada a la biblioteca.The stdout and stderr functions are flushed whenever they are full or, if you are writing to a character device, after each library call. Si un programa finaliza incorrectamente, los búferes de salida pueden no ser vaciados, lo que resulta en pérdida de datos.If a program terminates abnormally, output buffers may not be flushed, resulting in loss of data. Use fflush o _flushall para asegurarse de que el búfer asociado con un archivo especificado o todos los búferes abiertos se vacían en el sistema operativo, que puede almacenar datos en caché antes de escribir en el disco.Use fflush or _flushall to ensure that the buffer associated with a specified file or all open buffers are flushed to the operating system, which can cache data before writing it to disk. La característica de confirmación en disco garantiza que el contenido del búfer de vaciado no se pierda si se produce un error del sistema.The commit-to-disk feature ensures that the flushed buffer contents are not lost in the event of a system failure.

Hay dos formas de confirmar el contenido del búfer en el disco:There are two ways to commit buffer contents to disk:

  • Vincular con el archivo COMMODE.OBJ para establecer una un indicador global de confirmación.Link with the file COMMODE.OBJ to set a global commit flag. El valor predeterminado del indicador global es n para "no-commit".The default setting of the global flag is n, for "no-commit."

  • Defina el indicador de modo en c con fopen o _fdopen.Set the mode flag to c with fopen or _fdopen.

Cualquier archivo que se abra específicamente con el indicador c o n se comporta según el indicador, independientemente del estado del indicador global commit/no-commit.Any file specifically opened with either the c or the n flag behaves according to the flag, regardless of the state of the global commit/no-commit flag.

Si el programa no cierra explícitamente una secuencia, la secuencia se cierra automáticamente cuando finaliza el programa.If your program does not explicitly close a stream, the stream is automatically closed when the program terminates. Sin embargo, debe cerrar una secuencia cuando el programa termina de usarla, ya que el número de secuencias que pueden estar abiertas al mismo tiempo es limitado.However, you should close a stream when your program finishes with it, as the number of streams that can be open at one time is limited. Vea _setmaxstdio para obtener información sobre este límite.See _setmaxstdio for information on this limit.

La entrada puede seguir directamente a la salida solo con una llamada intermedia a fflush o a una función de posicionamiento de archivo (fseek, fsetpos o rewind).Input can follow output directly only with an intervening call to fflush or to a file-positioning function (fseek, fsetpos, or rewind). La salida puede seguir a la entrada sin una llamada intermedia a una función de posicionamiento de archivo si la operación de entrada encuentra el final del archivo.Output can follow input without an intervening call to a file-positioning function if the input operation encounters the end of the file.

Consulta tambiénSee also

Entrada y salidaInput and Output
Rutinas en tiempo de ejecución Universal C por categoríaUniversal C runtime routines by category