Función de biblioteca C - fscanf ()
Descripción
La función de la biblioteca C int fscanf(FILE *stream, const char *format, ...) lee la entrada formateada de una secuencia.
Declaración
A continuación se muestra la declaración de la función fscanf ().
int fscanf(FILE *stream, const char *format, ...)
Parámetros
stream - Este es el puntero a un objeto FILE que identifica la secuencia.
format- Esta es la cadena C que contiene uno o más de los siguientes elementos: carácter de espacio en blanco, carácter que no es de espacio en blanco y especificadores de formato . Un especificador de formato será como[=%[*][width][modifiers]type=], que se explica a continuación:
No Señor. | Argumento y descripción |
---|---|
1 | * Este es un asterisco inicial opcional que indica que los datos se leerán del flujo pero se ignorarán, es decir, no se almacenan en el argumento correspondiente. |
2 | width Esto especifica el número máximo de caracteres que se leerán en la operación de lectura actual. |
3 | modifiers Especifica un tamaño diferente de int (en el caso de d, iyn), unsigned int (en el caso de o, uyx) o float (en el caso de e, fyg) para los datos apuntados por argumento adicional correspondiente: h: short int (para d, iyn), o unsigned short int (para o, u y x) l: long int (para d, iyn), o unsigned long int (para o, u y x), o doble (para e, f y g) L: doble largo (para e, f y g) |
4 | type Un carácter que especifica el tipo de datos que se leerán y cómo se espera que se lean. Consulte la siguiente tabla. |
especificadores de tipo fscanf
tipo | Entrada de calificación | Tipo de argumento |
---|---|---|
C | Carácter único: lee el siguiente carácter. Si se especifica un ancho diferente de 1, la función lee los caracteres de ancho y los almacena en las ubicaciones sucesivas de la matriz pasada como argumento. No se agrega ningún carácter nulo al final. | char * |
re | Entero decimal: Número opcionalmente precedido por un signo + o - | En t * |
e, E, f, g, G | Punto flotante: número decimal que contiene un punto decimal, opcionalmente precedido por un signo + o - y opcionalmente seguido por el carácter e o E y un número decimal. Dos ejemplos de entradas válidas son -732.103 y 7.12e4 | flotar * |
o | Entero octal: | En t * |
s | Cadena de caracteres. Esto leerá los caracteres posteriores hasta que se encuentre un espacio en blanco (los espacios en blanco se consideran en blanco, nueva línea y tabulación). | char * |
tu | Entero decimal sin signo. | unsigned int * |
x, X | Entero hexadecimal | En t * |
additional arguments- Dependiendo de la cadena de formato, la función puede esperar una secuencia de argumentos adicionales, cada uno con un valor que se insertará en lugar de cada% -tag especificado en el parámetro de formato (si corresponde). Debe haber el mismo número de estos argumentos que el número de% -tags que esperan un valor.
Valor devuelto
Esta función devuelve el número de elementos de entrada que se emparejaron y asignaron correctamente, que puede ser menos de lo previsto o incluso cero en caso de que se produzca una falla de coincidencia temprana.
Ejemplo
El siguiente ejemplo muestra el uso de la función fscanf ().
#include <stdio.h>
#include <stdlib.h>
int main () {
char str1[10], str2[10], str3[10];
int year;
FILE * fp;
fp = fopen ("file.txt", "w+");
fputs("We are in 2012", fp);
rewind(fp);
fscanf(fp, "%s %s %s %d", str1, str2, str3, &year);
printf("Read String1 |%s|\n", str1 );
printf("Read String2 |%s|\n", str2 );
printf("Read String3 |%s|\n", str3 );
printf("Read Integer |%d|\n", year );
fclose(fp);
return(0);
}
Compilemos y ejecutemos el programa anterior que producirá el siguiente resultado:
Read String1 |We|
Read String2 |are|
Read String3 |in|
Read Integer |2012|