Función de biblioteca C - sscanf ()
Descripción
La función de la biblioteca C int sscanf(const char *str, const char *format, ...) lee la entrada formateada de una cadena.
Declaración
A continuación se muestra la declaración de la función sscanf ().
int sscanf(const char *str, const char *format, ...)
Parámetros
str - Esta es la cadena C que la función procesa como fuente para recuperar los datos.
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 sigue a este prototipo: [=% [*] [ancho] [modificadores] tipo =]
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, f y g) para los datos apuntados por el 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 * |
other arguments - Esta función espera una secuencia de punteros como argumentos adicionales, cada uno apuntando a un objeto del tipo especificado por su correspondiente% -tag dentro de la cadena de formato, en el mismo orden.
Para cada especificador de formato en la cadena de formato que recupera datos, se debe especificar un argumento adicional. Si desea almacenar el resultado de una operación sscanf en una variable regular, debe preceder su identificador con el operador de referencia, es decir, un signo comercial (&), como: int n; sscanf (str, "% d", & n);
Valor devuelto
Si tiene éxito, la función devuelve el número de variables completadas. En el caso de una falla de entrada antes de que los datos puedan leerse correctamente, se devuelve EOF.
Ejemplo
El siguiente ejemplo muestra el uso de la función sscanf ().
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main () {
int day, year;
char weekday[20], month[20], dtm[100];
strcpy( dtm, "Saturday March 25 1989" );
sscanf( dtm, "%s %s %d %d", weekday, month, &day, &year );
printf("%s %d, %d = %s\n", month, day, year, weekday );
return(0);
}
Compilemos y ejecutemos el programa anterior que producirá el siguiente resultado:
March 25, 1989 = Saturday