fscanf
, _fscanf_l
, , fwscanf
, _fwscanf_l
Lea datos con formato en una secuencia. Hay disponibles versiones más seguras de estas funciones; consulte fscanf_s
, _fscanf_s_l
, fwscanf_s
, _fwscanf_s_l
.
Sintaxis
int fscanf(
FILE *stream,
const char *format [,
argument ]...
);
int _fscanf_l(
FILE *stream,
const char *format,
_locale_t locale [,
argument ]...
);
int fwscanf(
FILE *stream,
const wchar_t *format [,
argument ]...
);
int _fwscanf_l(
FILE *stream,
const wchar_t *format,
_locale_t locale [,
argument ]...
);
Parámetros
stream
Puntero a la estructura FILE
.
format
Cadena de control de formato.
argument
Argumentos opcionales.
locale
Configuración regional que se va a usar.
Valor devuelto
Cada una de estas funciones devuelve el número de campos convertidos y asignados correctamente; el valor devuelto no incluye los campos que se han leído pero no se han asignado. Un valor devuelto de 0 indica que no se ha asignado ningún campo. Si se produce un error, o si se llega al final del flujo de archivo antes de la primera conversión, el valor devuelto es EOF
para fscanf
y fwscanf
.
Estas funciones validan sus parámetros. Si stream
o format
es un NULL
puntero, se invoca el controlador de parámetros no válidos, como se describe en Validación de parámetros. Si la ejecución puede continuar, estas funciones devuelven EOF
y establecen errno
en EINVAL
.
Comentarios
La función fscanf
lee datos desde la posición actual de stream
en las ubicaciones que argument
proporciona (de haberlas). Cada argument
debe ser un puntero a una variable de un tipo que se corresponda con un especificador de tipo en format
. format
controla la interpretación de los campos de entrada y tiene el mismo formato y función que el argumento format
de scanf
; consulte scanf
para obtener una descripción de format
.
fwscanf
es una versión con caracteres anchos de fscanf
; el argumento de formato para fwscanf
es una cadena de caracteres anchos. Estas funciones se comportan igual si el flujo se abre en modo ANSI. fscanf
no admite actualmente la entrada desde un flujo UNICODE.
Las versiones de estas funciones con el sufijo _l
son idénticas salvo que usan el parámetro locale pasado en lugar de la configuración regional del subproceso actual.
Asignaciones de rutinas de texto genérico
Rutina TCHAR.H |
_UNICODE y _MBCS no definidos |
_MBCS definido |
_UNICODE definido |
---|---|---|---|
_ftscanf |
fscanf |
fscanf |
fwscanf |
_ftscanf_l |
_fscanf_l |
_fscanf_l |
_fwscanf_l |
Para obtener más información, vea Formato de campos de especificación: scanf
y wscanf
funciones.
Requisitos
Función | Encabezado necesario |
---|---|
fscanf , _fscanf_l |
<stdio.h> |
fwscanf , _fwscanf_l |
<stdio.h> o <wchar.h> |
Para obtener más información sobre compatibilidad, consulte Compatibilidad.
Ejemplo
// crt_fscanf.c
// compile with: /W3
// This program writes formatted
// data to a file. It then uses fscanf to
// read the various data back from the file.
#include <stdio.h>
FILE *stream;
int main( void )
{
long l;
float fp;
char s[81];
char c;
if( fopen_s( &stream, "fscanf.out", "w+" ) != 0 )
printf( "The file fscanf.out was not opened\n" );
else
{
fprintf( stream, "%s %ld %f%c", "a-string",
65000, 3.14159, 'x' );
// Security caution!
// Beware loading data from a file without confirming its size,
// as it may lead to a buffer overrun situation.
// Set pointer to beginning of file:
fseek( stream, 0L, SEEK_SET );
// Read data back from file:
fscanf( stream, "%s", s ); // C4996
fscanf( stream, "%ld", &l ); // C4996
fscanf( stream, "%f", &fp ); // C4996
fscanf( stream, "%c", &c ); // C4996
// Note: fscanf is deprecated; consider using fscanf_s instead
// Output data read:
printf( "%s\n", s );
printf( "%ld\n", l );
printf( "%f\n", fp );
printf( "%c\n", c );
fclose( stream );
}
}
a-string
65000
3.141590
x
Vea también
E/S de secuencia
_cscanf
, _cscanf_l
, , _cwscanf
, _cwscanf_l
fprintf
, _fprintf_l
, , fwprintf
, _fwprintf_l
scanf
, _scanf_l
, , wscanf
, _wscanf_l
sscanf
, _sscanf_l
, , swscanf
, _swscanf_l
fscanf_s
, _fscanf_s_l
, , fwscanf_s
, _fwscanf_s_l