Especificadores de formato en C: Guía completa con ejemplos

Especificadores de formato en C: Guía completa con ejemplos

Los especificadores de formato son elementos esenciales en el lenguaje C, utilizados para controlar la forma en que los datos se muestran en la salida o se leen desde la entrada. En este artículo, profundizaremos en el funcionamiento de los especificadores de formato, explorando su uso en las funciones de entrada/salida estándar como printf() y scanf(), así como en las funciones de entrada/salida de archivos como fprintf() y fscanf().

Los especificadores de formato son como llaves que desbloquean la capacidad de manipular datos de diferentes tipos. Se utilizan para especificar el tipo de dato que se va a convertir y el formato en que se va a presentar. Estos símbolos especiales, que generalmente comienzan con el carácter %, proporcionan un puente entre los datos que se manejan en el nivel de la CPU y la forma en que se representan para los usuarios o se leen desde una fuente externa.

Especificadores de formato en printf()

La función printf() se utiliza para mostrar datos formateados en la salida estándar (generalmente la consola). Los especificadores de formato dentro de la cadena de formato de printf() controlan cómo se representan los argumentos que se pasan a la función.

Ejemplos:

  • %d: Para imprimir un entero decimal.
  • %f: Para imprimir un número de punto flotante.
  • %s: Para imprimir una cadena de caracteres.

Código de ejemplo:

«`c

include

int main() {
int entero = 10;
float flotante = 3.14;
char cadena[] = «Hola mundo!»;

printf(«El entero es: %dn», entero);
printf(«El flotante es: %fn», flotante);
printf(«La cadena es: %sn», cadena);

return 0;
}
«`

Salida:


El entero es: 10
El flotante es: 3.140000
La cadena es: Hola mundo!

Especificadores de formato en scanf()

La función scanf() se utiliza para leer datos formateados de la entrada estándar (generalmente la consola). Los especificadores de formato dentro de la cadena de formato de scanf() controlan cómo se interpretan los datos que se introducen por el usuario.

Ejemplos:

  • %d: Para leer un entero decimal.
  • %f: Para leer un número de punto flotante.
  • %s: Para leer una cadena de caracteres.

Código de ejemplo:

«`c

include

int main() {
int entero;
float flotante;
char cadena[100];

printf(«Ingrese un entero: «);
scanf(«%d», &entero);

printf(«Ingrese un flotante: «);
scanf(«%f», &flotante);

printf(«Ingrese una cadena: «);
scanf(«%s», cadena);

printf(«El entero es: %dn», entero);
printf(«El flotante es: %fn», flotante);
printf(«La cadena es: %sn», cadena);

return 0;
}
«`

Entrada del usuario:


Ingrese un entero: 25
Ingrese un flotante: 7.89
Ingrese una cadena: ¡Hola!

Salida:


El entero es: 25
El flotante es: 7.890000
La cadena es: ¡Hola!

Tipos de especificadores de formato

Especificadores para enteros

  • %d: Para imprimir un entero decimal con signo.
  • %u: Para imprimir un entero decimal sin signo.
  • %i: Para imprimir un entero en formato decimal, octal o hexadecimal según el prefijo del valor.
  • %x: Para imprimir un entero en formato hexadecimal con minúsculas.
  • %X: Para imprimir un entero en formato hexadecimal con mayúsculas.
  • %o: Para imprimir un entero en formato octal.

Especificadores para números de punto flotante

  • %f: Para imprimir un número de punto flotante en formato decimal.
  • %e: Para imprimir un número de punto flotante en notación científica (e.g., 1.234e+03).
  • %E: Similar a %e, pero con E mayúscula en la notación científica.
  • %g: Para imprimir un número de punto flotante en notación decimal o científica, según cuál sea más compacta.
  • %G: Similar a %g, pero con E mayúscula en la notación científica.

Modificadores de ancho y precisión

Los especificadores de formato pueden acompañarse de modificadores para controlar el ancho del campo de salida y la precisión de la representación.

Ejemplo:

c
printf("%5d", 123); // Imprime " 123" (ancho de campo 5)
printf("%.2f", 3.14159); // Imprime "3.14" (precisión de 2 decimales)

Especificadores de formato en fprintf() y fscanf()

Las funciones fprintf() y fscanf() se utilizan para escribir y leer datos formateados en archivos. Funcionan de forma similar a printf() y scanf(), respectivamente, con la diferencia de que toman como argumento adicional un puntero de archivo.

Ejemplo:

«`c

include

int main() {
FILE *fp;
int entero = 10;
float flotante = 3.14;

fp = fopen(«datos.txt», «w»); // Abre el archivo «datos.txt» para escritura

fprintf(fp, «El entero es: %dn», entero);
fprintf(fp, «El flotante es: %fn», flotante);

fclose(fp); // Cierra el archivo

return 0;
}
«`

El código anterior escribe los valores de entero y flotante en el archivo «datos.txt» con el formato especificado.

Ejemplos de uso de especificadores de formato

1. Imprimir un entero con signo en formato decimal:

c
int numero = -1234;
printf("El número es: %dn", numero); // Salida: El número es: -1234

2. Imprimir un número de punto flotante con 3 decimales:

c
float pi = 3.14159265;
printf("El valor de pi es: %.3fn", pi); // Salida: El valor de pi es: 3.142

3. Leer un entero decimal desde la entrada estándar:

c
int edad;
printf("Ingrese su edad: ");
scanf("%d", &edad);
printf("Su edad es: %dn", edad);

4. Imprimir una cadena con un ancho de campo de 15 caracteres:

c
char nombre[] = "Juan Pérez";
printf("%15sn", nombre); // Salida: Juan Pérez

5. Escribir un número de punto flotante en formato científico en un archivo:

«`c
FILE *fp;
double velocidad = 2.99792458e8; // Velocidad de la luz en m/s

fp = fopen(«resultados.txt», «w»);
fprintf(fp, «La velocidad de la luz es: %e m/sn», velocidad);
fclose(fp);
«`

Conclusiones

Los especificadores de formato son herramientas esenciales para controlar la forma en que los datos se presentan en C. Dominar su uso permite a los programadores manipular datos de diferentes tipos y formatos, mejorando la legibilidad, la precisión y la personalización de las aplicaciones.

En este artículo, hemos explorado los distintos tipos de especificadores de formato, incluyendo los modificadores de ancho y precisión, y hemos visto ejemplos concretos de su aplicación en las funciones printf(), scanf(), fprintf() y fscanf().

La comprensión de los especificadores de formato es fundamental para cualquier programador en C, ya que permite un control preciso sobre la entrada y salida de datos en cualquier programa.

Palabras clave:

  • Especificadores de formato
  • printf()
  • scanf()
  • fprintf()
  • fscanf()
  • Formato de salida
  • Formato de entrada
  • Conversión de datos
  • Tipos de datos
  • Enteros
  • Números de punto flotante
  • Cadenas
  • Modificadores de ancho
  • Modificadores de precisión

Recursos adicionales:

LEER:  Arquitectura de Software: Guía Completa para Principiantes