Funciones de la biblioteca C -scanf()
Biblioteca estándar de C - <stdio.h>
Descripción
Funciones de la biblioteca Cint scanf(const char *format, ...)Lee la entrada con formato desde la entrada estándar stdin.
Declaración
A continuación se muestra la declaración de la función scanf().
int scanf(const char *format, ...)
Parámetros
- format-- Esta es una cadena de C, que contiene uno o más de los siguientes elementos:Caracteres de espacio, caracteres que no son espacioyEspecificadores de formato。
La forma del especificador de formato es:
[=%[*][width][modifiers]type=]
La explicación detallada es la siguiente:
| Parámetro | Descripción |
|---|---|
| * | Este es un asterisco opcional, que indica que los datos se leen del flujo (stream), pero pueden ignorarse, es decir, no se almacenan en el parámetro correspondiente. |
| width | Esto especifica el número máximo de caracteres que se leerán en la operación de lectura actual. |
| modifiers | Especifica un tamaño diferente al del tipo entero (para d, i y n), entero sin signo (para o, u y x) o punto flotante (para e, f y g) para los datos a los que apunta el correspondiente parámetro adicional: h : entero corto (para d, i y n), o entero corto sin signo (para o, u y x) l : entero largo (para d, i y n), o entero largo sin signo (para o, u y x), o doble precisión (para e, f y g) L : doble precisión larga (para e, f y g) |
| type | Un carácter que especifica el tipo de datos que se va a leer y la forma de leerlos. Consulte la siguiente tabla para más detalles. |
Especificadores de tipo de scanf:
| Tipo | Entrada válida | Tipo de argumento |
|---|---|---|
| %a、%A | Lee un valor de punto flotante (válido solo en C99). | float * |
| %c | Un solo carácter: lee el siguiente carácter. Si se especifica un ancho width distinto de 1, la función lee width caracteres y los almacena en posiciones consecutivas del arreglo pasándolos mediante el parámetro. No se añade un carácter nulo al final. | char * |
| %d | Entero decimal: el signo + o - delante del número es opcional. | int * |
| %e、%E、%f、%F、%g、%G | Número de punto flotante: incluye un punto decimal, un signo inicial + o - opcional, un carácter posterior e o E opcional, y un exponente decimal. Dos ejemplos válidos son -732.103 y 7.12e4 | float * |
| %i | Lee enteros decimales, octales y hexadecimales. | int * |
| %o | Entero octal. | int * |
| %s | Cadena. Esto lee caracteres consecutivos hasta encontrar un carácter de espacio en blanco (el carácter de espacio en blanco puede ser un espacio, un salto de línea o una tabulación). | char * |
| %u | Entero decimal sin signo. | unsigned int * |
| %x、%X | Entero hexadecimal. | int * |
| %p | Lee un puntero. | |
| %[] | Escanea un conjunto de caracteres. | |
| %% | Lee el símbolo %. |
- Parámetros adicionales-- Dependiendo de la cadena de formato (format), la función puede necesitar una serie de parámetros adicionales. Cada parámetro contiene un valor que se insertará, reemplazando a cada etiqueta % especificada en el parámetro format. El número de parámetros debe ser igual al número de etiquetas %.
Valor de retorno
Si tiene éxito, la función devuelve el número de coincidencias y asignaciones correctas. Si se alcanza el final del archivo o se produce un error de lectura, devuelve EOF.
Ejemplo
El siguiente ejemplo demuestra el uso de la función scanf().
Ejemplo
Compilemos y ejecutemos el programa anterior, lo que producirá el siguiente resultado en modo interactivo:
请输入三个数字:1 2 3 1,2,3
Explicación:
- 1, &a、&b、&cen&es el operador de dirección, que obtiene las direcciones de memoria de estas tres variables respectivamente.
- 2, %d%d%des ingresar tres valores en formato decimal. Al ingresar, entre dos datos se pueden usar uno o más espacios, tabuladores o teclas Enter como separadores.
Ejemplo
Compilemos y ejecutemos el programa anterior, lo que producirá el siguiente resultado en modo interactivo:
请输入三个数字:1, 2, 3 1, 2, 3
Nota:Al ingresar,antes debe estar inmediatamente después del número, entre el número y,no debe haber espacios entre ellos.
Al ingresar con %c, los espacios y los "caracteres de escape" se consideran caracteres válidos.
Ejemplo
Compilemos y ejecutemos el programa anterior, lo que producirá el siguiente resultado en modo interactivo:
$ ./a.out 请输入三个字符:run r,u,n $ ./a.out 请输入三个字符:r u n r, ,u
El siguiente ejemplo demuestra cómo recibir una cadena:
Ejemplo
Compilemos y ejecutemos el programa anterior, lo que producirá el siguiente resultado en modo interactivo:
请输入用户名:admin 请输入您的网站:www.example.com 输入的用户名:admin 输入的网站:www.example.comOtras extensiones