El especificador de formato en C se utiliza para informar al compilador sobre el tipo de datos que se imprimirán o escanearán en las operaciones de entrada y salida. Siempre empiezan con un % símbolo y se utilizan en la cadena formateada en funciones como printf(), scanf, sprintf(), etc.
El lenguaje C proporciona una serie de especificadores de formato que están asociados con los diferentes tipos de datos, como %d para int, %c para char, etc. En este artículo, analizaremos algunos especificadores de formato comúnmente utilizados y cómo utilizarlos.
Lista de especificadores de formato en C
La siguiente tabla contiene los especificadores de formato más utilizados en C.
| Especificador de formato | Descripción |
|---|---|
| %C | Para tipo de personaje. |
| %d | Para tipo entero con signo. |
| %e o %E | Para notación científica de flotadores. |
| %F | Para tipo flotador. |
| %g o %G | Para tipo flotante con la precisión actual. |
| %i cadena java contiene | Entero sin signo |
| %ld o %li | Largo |
| %lf | Doble |
| %Lf | Doble largo |
| % lu | Int sin firmar o largo sin firmar |
| %lli o %lld | Largo largo |
| %lu | Sin firmar mucho tiempo |
| %O | representación octal |
| %pag | Puntero |
| %s | Cadena |
| %en | entero sin firmar |
| %x o %X | Representación hexadecimal |
| %norte | no imprime nada |
| %% | Imprime % de caracteres |
Ejemplos de especificadores de formato en C
1. Especificador de formato de caracteres: %c en C
%c es el especificador de formato para el carbonizarse tipo de datos en lenguaje C. Se puede utilizar tanto para entradas formateadas como para salidas formateadas en lenguaje C.
Sintaxis:
scanf(' %d ...', ...); printf(' %d ...', ...);> Ejemplo:
C
// C Program to illustrate the %c format specifier.> #include> int> main()> {> >char> c;> >// using %c for character input> >scanf>(>'Enter some character: %c'>, &c);> >// using %c for character output> >printf>(>'The entered character: %c'>, &c);> >return> 0;> }> |
>
>
Aporte:
Enter some character: A>
Producción:
The entered character: A>
2. Especificador de formato de entero (con signo): %d en C
Podemos usar el especificador de formato de entero con signo. %d en las funciones scanf() e print() u otras funciones que usan cadenas formateadas para entrada y salida de En t tipo de datos.
Sintaxis:
scanf('%d...', ...); printf('%i...', ...);> Ejemplo:
C
// C Program to demonstrate the use of %d and %i> #include> // Driver code> int> main()> {> >int> x;> >// taking integer input> >scanf>(>'Enter the two integers: %d'>, &x);> >// printing integer output> >printf>(>'Printed using %%d: %d
'>, x);> >printf>(>'Printed using %%i: %3i
'>, x);> >return> 0;> }> |
>
>
Aporte:
Enter the integer: 45>
Producción:
Printed using %d: 45 Printed using %i: 45>
3. Especificador de formato de entero sin signo: %u en C
%u es el especificador de formato para el tipo de datos entero sin signo. Si especificamos un valor entero negativo para %u, convierte el número entero a su primer complemento.
Sintaxis:
printf(' %u ...', ...); scanf(' %u ...', ...);> Ejemplo: El siguiente programa C demuestra cómo utilizar %u en C.
C
// C Program to illustrate the how to use %u> #include> // driver code> int> main()> {> >unsigned>int> var;> >scanf>(>'Enter an integer: %u'>, &var);> >printf>(>'Entered Unsigned Integer: %u'>, var);> >// trying to print negative value using %u> >printf>(>'Printing -10 using %%u: %u
'>, -10);> >return> 0;> }> |
>
>
Aporte:
Enter an integer: 25>
Producción:
Entered unsigned integer: 25 Printing -10 using %u: 4294967286>
4. Especificador de formato de punto flotante: %f en C
El %F es el especificador de formato de punto flotante en lenguaje C que se puede usar dentro de la cadena formateada para entrada y salida de flotar tipo de datos. Aparte de %f, podemos usar %Es o %Y especificadores de formato para imprimir el valor de punto flotante en forma exponencial.
Sintaxis:
printf(' %f ...', ...); scanf(' %e ...', ...); printf(' %E ...', ...);> Ejemplo:
C
// C program to demonstrate the use of %f, %e and %E> #include> // driver code> int> main()> {> >float> a = 12.67;> >printf>(>'Using %%f: %f
'>, a);> >printf>(>'Using %%e: %e
'>, a);> >printf>(>'Using %%E, %E'>, a);> >return> 0;> }> |
>
>Producción
Using %f: 12.670000 Using %e: 1.267000e+01 Using %E, 1.267000E+01>
5. Número octal sin signo para entero: %o en C
Podemos usar el especificador de formato %o en el programa C para imprimir o recibir entradas para el número entero octal sin signo.
Sintaxis:
printf(' %o ...', ...); scanf(' %o ...', ...);> Ejemplo:
C
#include> int> main()> {> >int> a = 67;> >printf>(>'%o
'>, a);> >return> 0;> }> |
>
>Producción
103>
6. Hexadecimal sin signo para números enteros: %x en C
El especificador de formato %x se utiliza en la cadena formateada para enteros hexadecimales. En este caso, los alfabetos de los números hexadecimales estarán en minúsculas. Para los dígitos del alfabeto en mayúsculas, utilizamos %X en su lugar.
Sintaxis:
printf(' %x ...', ...); scanf(' %X ...', ...);> Ejemplo:
C
// C Program to demonstrate the use of %x and %X> #include> int> main()> {> >int> a = 15454;> >printf>(>'%x
'>, a);> >printf>(>'%X'>, a);> >return> 0;> }> |
>
cambiar el nombre de la carpeta de Linux
>Producción
3c5e 3C5E>
7. Especificador de formato de cadena: %s en C
%s en C se usa para imprimir cadenas o tomar cadenas como entrada.
Sintaxis:
printf(' %s ...', ...); scanf(' %s ...', ...);> Ejemplo:
C
// C program to illustrate the use of %s in C> #include> int> main()> {> >char> a[] =>'Hi Geeks'>;> >printf>(>'%s
'>, a);> >return> 0;> }> |
>
>Producción
Hi Geeks>
Ejemplo: El funcionamiento de %s con scanf() es un poco diferente de su funcionamiento con printf(). Entendamos esto con la ayuda del siguiente programa en C.
C
// C Program to illustrate the working of %s with scanf()> #include> int> main()> {> >char> str[50];> >// taking string as input> >scanf>(>'Enter the String: %s'>, str);> >printf>(>'Entered String: %s'>, str);> >return> 0;> }> |
>
>
Aporte
Enter the string: Hi Geeks>
Producción
Hi>
Como podemos ver, la cadena solo se escanea hasta que se encuentra un espacio en blanco. Podemos evitarlo usando conjuntos de escaneos en C .
8. Especificador de formato de dirección: %p en C
El lenguaje C también proporciona el especificador de formato para imprimir las direcciones/punteros. Podemos usar %p para imprimir direcciones y punteros en C
Sintaxis
printf(' %p ...', ...);> Ejemplo:
C
#include> int> main()> {> >int> a = 10;> >printf>(>'The Memory Address of a: %p
'>,(>void>*)&a);> >return> 0;> }> |
>
>Producción
The Memory Address of a: 0x7ffe9645b3fc>
Formato de entrada y salida
El lenguaje C proporciona algunas herramientas mediante las cuales podemos formatear la entrada y la salida. Generalmente se insertan entre el signo % y el símbolo especificador de formato. Algunos de ellos son los siguientes:
- Un signo menos (-) indica la alineación hacia la izquierda.
- un número después % especifica el ancho mínimo del campo que se imprimirá si los caracteres son menores que el tamaño del ancho, el espacio restante se llena con espacio y si es mayor entonces se imprime como está sin truncamiento.
- Un símbolo de punto (.) separa el ancho del campo con precisión.
La precisión indica la cantidad mínima de dígitos en un número entero, la cantidad máxima de caracteres en una cadena y la cantidad de dígitos después de la parte decimal en un valor flotante.
Ejemplo de formato de E/S
C
// C Program to demonstrate the formatting methods.> #include> int> main()> {> >char> str[] =>'geeksforgeeks'>;> >printf>(>'%20s
'>, str);> >printf>(>'%-20s
'>, str);> >printf>(>'%20.5s
'>, str);> >printf>(>'%-20.5s
'>, str);> >return> 0;> }> |
>
>Producción
geeksforgeeks geeksforgeeks geeks geeks>
Preguntas frecuentes sobre especificadores de formato C
1. ¿Tiene C un especificador de formato para números binarios?
No, el lenguaje C no proporciona un especificador de formato para números binarios.
2. ¿Cuál es la cadena formateada?
Las funciones de entrada y salida en C toman una cadena como argumento que decide cómo se muestran los datos en la pantalla o cómo se recuperan los datos en la memoria. Esta cadena se llama cadena formateada.