Compartir a través de


scanf caracteres de campo de tipo

La siguiente información se aplica a cualquiera de la familia de funciones scanf , incluidas las versiones seguras, como scanf_s.

El carácter de type es el único campo de formato necesario; aparece después de cualquier campo de formato opcional. El carácter de type determina si el argumento asociado se interpreta como un carácter, una cadena o un número.

Caracteres type para funciones scanf

Carácter Tipo de entrada esperada Tipo de argumento ¿Argumento de tamaño en la versión segura?
c Carácter. Cuando se usa con funciones scanf , especifica un carácter de un solo byte; cuando se usa con funciones wscanf , especifica un carácter ancho. Cuando se especifica c , se leen los caracteres de espacio en blanco que normalmente se omiten. A diferencia de lo que ocurre con otros campos de tipo, el especificador de ancho de campo indica el número exacto de caracteres, no el máximo. Para leer el siguiente carácter de un solo byte que no sea un espacio en blanco, use %1s; para leer el siguiente carácter ancho que no sea un espacio en blanco, use %1ws. Puntero a char cuando se utiliza con funciones scanf , puntero a wchar_t cuando se utiliza con funciones wscanf . Necesario. El tamaño no incluye espacio para un terminador NULO.
C Carácter de tamaño opuesto. Cuando se usa con funciones scanf , especifica un carácter ancho; cuando se usa con funciones wscanf , especifica un carácter de un solo byte. Cuando se especifica C , se leen los caracteres de espacio en blanco que normalmente se omiten. A diferencia de lo que ocurre con otros campos de tipo, el especificador de ancho de campo indica el número exacto de caracteres, no el máximo. Para leer el siguiente carácter de un solo byte que no sea un espacio en blanco, use %1s; para leer el siguiente carácter ancho que no sea un espacio en blanco, use %1ws. Puntero a wchar_t cuando se utiliza con funciones scanf , puntero a char cuando se utiliza con funciones wscanf . Necesario. El argumento Size no incluye espacio para un terminador NULL.
d Entero decimal. Puntero a int. No.
i Entero. Hexadecimal si la cadena de entrada comienza con “0x” o “0X”, octal si la cadena comienza con “0”, decimal en el resto de los casos. Puntero a int. No.
o Entero octal. Puntero a int. No.
p Dirección de puntero en dígitos hexadecimales. El número máximo de dígitos leídos depende del tamaño de un puntero (32 bits o 64 bits), que depende de la arquitectura de la máquina. "0x" o "0X" se aceptan como prefijos. Puntero a void*. No.
u Entero decimal sin signo. Puntero a unsigned int. No.
x Entero hexadecimal. Puntero a int. No.
e, E, f, F, , g, G Valor de punto flotante que consta de un signo opcional (+ o -), una serie de uno o varios dígitos decimales que contiene el separador decimal y un exponente opcional ("e" o "E") seguido por un valor entero con signo opcional. Puntero a float. No.
a, A Valor de punto flotante que consta de una serie de uno o varios dígitos hexadecimales que contiene un punto decimal opcional y un exponente ("p" o "P") seguido por un valor decimal. Puntero a float. No.
n No lee ninguna entrada de secuencia o búfer. Puntero a int, dentro del cual se almacena el número de caracteres correctamente leídos de la secuencia o búfer hasta ese punto en la llamada actual a funciones scanf o wscanf . No.
s Cadena, hasta el primer carácter de espacio en blanco (espacio, tabulación o nueva línea). Para leer cadenas no delimitadas por caracteres de espacio, use el conjunto de corchetes ([ ]), tal como se describe en Especificación del ancho de scanf. Cuando se usa con funciones scanf , especifica un carácter de un solo byte; cuando se usa con funciones wscanf , especifica una matriz de caracteres anchos. En cualquiera de los casos, la matriz de caracteres debe ser lo suficientemente grande como para que quepa el campo de entrada más el carácter nulo de terminación, que se anexa automáticamente. Necesario. El tamaño incluye espacio para un terminador nulo.
S Cadena de caracteres tamaño opuesto, hasta el primer carácter de espacio en blanco (espacio, tabulación o nueva línea). Para leer cadenas no delimitadas por caracteres de espacio, use el conjunto de corchetes ([ ]), tal como se describe en Especificación del ancho de scanf. Cuando se usa con funciones scanf, especifica una matriz de caracteres anchos; cuando se usa con funciones wscanf, especifica una matriz de caracteres de un solo byte. En cualquiera de los casos, la matriz de caracteres debe ser lo suficientemente grande como para que quepa el campo de entrada más el carácter nulo de terminación, que se anexa automáticamente. Necesario. El tamaño incluye espacio para un terminador nulo.

Los argumentos size, si es necesario, deben pasarse en la lista de parámetros inmediatamente después del argumento al que se aplican. Por ejemplo, el código siguiente:

char string1[11], string2[9];
scanf_s("%10s %8s", string1, 11, string2, 9);

lee una cadena con una longitud máxima de 10 en string1y una cadena con una longitud máxima de 8 en string2. Los tamaños de búfer deben ser al menos un carácter mayor que las especificaciones de ancho, ya que se debe reservar espacio para el terminador nulo.

La cadena de formato puede controlar una entrada de caracteres de byte único o anchos independientemente de si se utiliza la versión de carácter de byte único o de carácter ancho de la función. Por lo tanto, para leer caracteres de byte único o anchos con funciones scanf y wscanf , use especificadores de formato de la siguiente manera.

Para leer caracteres como Use esta función Con estos especificadores de formato
un solo byte funcionesscanf c, hco hC
un solo byte funcioneswscanf C, hco hC
anchos funcioneswscanf c, lco lC
anchos funcionesscanf C, lco lC

Para analizar cadenas con funciones scanf y wscanf , utilice la tabla anterior con especificadores de tipo de formato s y S en lugar de c y C.

Consulte también

scanf, _scanf_l, , wscanf, _wscanf_l