Especificadores de formato en C

El especificador de formato se utiliza durante la entrada y la salida. Es una forma de decirle al compilador qué tipo de datos hay en una variable durante la entrada usando scanf() o imprimiendo usando printf(). Algunos ejemplos son %c, %d, %f, etc.
El especificador de formato en printf() y scanf() es prácticamente el mismo, pero hay algunas diferencias que veremos. 

printf(char *formato, arg1, arg2, …)

Esta función imprime el carácter en la salida estándar y devuelve el número de caracteres impresos, el formato es una string que comienza con % y termina con el carácter de conversión (como c, i, f, d, etc.). 
Entre ambos, pueden existir elementos que rijan el formato de impresión. A continuación se muestra su descripción. 

  1. Un signo menos (-) indica la alineación a la izquierda.
  2. Un número después de % especifica el ancho de campo mínimo 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 de lo que se imprimió sin truncamiento.
  3. Un símbolo de punto ( . ) separa el ancho del campo con la precisión.

La precisión indica el número mínimo de dígitos en un número entero, el número máximo de caracteres en una string y el número de dígitos después de la parte decimal en un valor flotante. 
Veamos estos… 
Especificador de formato de carácter: %c 

C

#include <stdio.h>
int main()
{
    char ch = 'A';
    printf("%c\n", ch);
    return 0;
}
Producción: 

A

 

Para el especificador de formato de entero con signo: %d, %i 

C

#include <stdio.h>
int main()
{
    int x = 45, y = 90;
    printf("%d\n", x);
    printf("%i\n", x);
    return 0;
}
Producción: 

45
45

 

Especificador de formato de entero sin signo: %u:

C

#include <stdio.h>
int main()
{
    // The -10 value is converted into it's positive
    // equivalent by %u
    printf("%u\n", -10);
    printf("%u\n", 10);
    return 0;
}
Output: 4294967286
        10

Especificador de formato de coma flotante: %f, %e o %E 

C

#include <stdio.h>
int main()
{
    float a = 12.67;
    printf("%f\n", a);
    printf("%e\n", a);
    return 0;
}
Producción: 

12.670000
1.267000e+01

 

Número octal sin signo para entero: %o 

C

#include <stdio.h>
int main()
{
    int a = 67;
    printf("%o\n", a);
    return 0;
}
Producción: 

103

 

Hexadecimal sin signo para entero: %x, %X 

C

#include <stdio.h>
int main()
{
    int a = 15;
    printf("%x\n", a);
    return 0;
}
Producción: 

f

 

Impresión de strings: %s 

C

#include <stdio.h>
int main()
{
    char a[] = "geeksforgeeks";
    printf("%s\n", a);
    return 0;
}
Producción: 

geeksforgeeks

 

Impresión de dirección: %p

Cuando nuestra intención es imprimir la dirección de memoria de una variable/puntero, ‘%d’ no funcionará porque ‘%d’ intentará formatear una dirección en un número y valores como 0xbfdd812 claramente no son un número, es decir, DEBEMOS usar % pags.

C

#include <stdio.h>
int main()
{
    int a = 10;
    printf("The Memory Address of a: %p\n",(void*)&a);
    return 0;
}
Output: The Memory Address of a: 0x7ffc85861624

Más formato

C

#include <stdio.h>
int main()
{
    char str[] = "geeksforgeeks";
    printf("%20s\n", str);
    printf("%-20s\n", str);
    printf("%20.5s\n", str);
    printf("%-20.5s\n", str);
    return 0;
}
Producción: 

       geeksforgeeks
geeksforgeeks       
               geeks
geeks

 

scanf(char *formato, arg1, arg2, …)

Esta función toma la entrada usando la entrada estándar (teclado) y la almacena en la variable correspondiente. Devuelve el número de elementos leídos con éxito. El parámetro formal arg1, agr2, .. debe ser un puntero
entero decimal: %d 

C

#include <stdio.h>
int main()
{
    int a = 0;
    scanf("%d", &a); // input is 45
    printf("%d\n", a);
    return 0;
}

El entero puede ser octal o hexadecimal: %i 

C

#include <stdio.h>
int main()
{
    int a = 0;
    scanf("%i", &a); // input is 017 (octal of 15 )
    printf("%d\n", a);
    scanf("%i", &a); // input is 0xf (hexadecimal of 15 )
    printf("%d\n", a);
    return 0;
}

Número de coma flotante doble: %lf 

C

#include <stdio.h>
int main()
{
    double a = 0.0;
    scanf("%lf", &a); // input is 45.65
    printf("%lf\n", a);
    return 0;
}
Producción: 

45.650000

 

Entrada de string: %s 

C

#include <stdio.h>
int main()
{
    char str[20];
    scanf("%s", str); // input is geeksforgeeks
    printf("%s\n", str);
    return 0;
}
Producción: 

P@

 

Entrada de caracteres: %c 

C

#include <stdio.h>
int main()
{
    char ch;
    scanf("%c", &ch); // input is A
    printf("%c\n", ch);
    return 0;
}

También hay muchos otros especificadores de formato 
1.%u para un entero sin signo. 
2.%lld para long long int. 
3.%o entero octal sin cero inicial 
4.%x entero hexadecimal sin 0x antes del número.
 

Publicación traducida automáticamente

Artículo escrito por him0000 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *