PrintfNumerosos lenguajes de programación implementan una función int printf(const char *formato, ...) La cadena constante Por ejemplo en C: printf("Color: %s, Número1: %d, Número2: %05d, Hexadecimal: %x, Real: %5.2f.\n", "rojo", 12345, 89, 255, 3.14);
imprimirá la siguiente línea (incluyendo el carácter de nueva línea \n): Color: rojo, Número1: 12345, Número2: 00089, Hexadecimal: ff, Real: 3.14. La función printf retorna el número de caracteres impresos, o un valor negativo si ocurre un error. EjemploEl clásico ejemplo de Hola Mundo! para mostrar esta cadena de texto. #include <stdio.h>
int main(void)
{
printf("¡Hola, mundo!\n");
return 0;
}
Formateadoresprintf permite dar formato específico a la salida, aquí algunos ejemplos:
TruncamientoLos formateadores permiten ser modificados para definir cantidad de dígitos o caracteres, introduciendo los parámetros de cantidad de dígitos y dígitos significativos como se puede notar en el siguiente ejemplo: printf("%[#_de_dígitos_a_la_derecha_del_punto].[#_de_dígitos_a_la_izquierda_del_punto]d") printf("%2d", 1234); // Imprime: 34 printf("%.2d", 1234); // Imprime: 34 printf("%-2d", 1234); // Imprime: 12 printf("%-.2d", 1234); // Imprime: 12
Funciones derivadassprintfPrototipo:. int sprintf(char *str, const char *format, ...) Devolviendo: un entero, que índica el número de caracteres leídos. Ejemplo de uso ( C ): #include <stdio.h>
int main()
{
char cadena[12];
char buffer[120];
char *buffer1 = "Hemos escrito un ESLOGAN con sprintf - ";
int i, j, numerito = 78989, tam_cad, tam_buffer;
for(i = 0; buffer1[i] != '\0'; i++) buffer[i] = buffer1[i]; /* Copiamos un STRING a Cadena y medimos su tamaño */
tam_buffer = i;
tam_cad = sprintf(cadena, "%d", numerito); /* Pasamos a cadena el número ( de entero a char* ) */
for(i = 0, j = tam_buffer; i < tam_cad; i++, j++) buffer[j] = cadena[i]; // Le pegamos la cadena ( contiene el numerito )
buffer[j] = '\0';
printf("\n\n %s \n\n", buffer);
return 0;
}
Mostraría: Hemos escrito un ESLOGAN con sprintf - 78989 fprintffprintf file print format permite que la salida de printf pueda escribirse en cualquier archivo. Los programadores suelen utilizarlo para imprimir errores, pero puede funcionar con cualquier archivo abierto con la función fopen. Su prototipo, dentro del archivo de cabecera stdio.h, sería: int fprintf(FILE *stream, const char *format, ...)
snprintfsnprintf string number print format produce una salida con formato como printf, pero en vez de enviarlo al stdout lo escribe a una cadena de caracteres. A diferencia de sprintf esta necesita el número de bytes que queremos escribir, pudiendo evitar así más fácilmente un problema de desbordamiento de buffer. Su prototipo, dentro del archivo de cabecera stdio.h, sería: int snprintf(char *str, size_t size, const char *format, ...)
Veamos un ejemplo: int edad = 5;
char nombre[10] = "Juan";
char cadena[10];
snprintf(cadena, sizeof(cadena), "Me llamo %s y tengo %d años", nombre, edad);
En este caso snprintf escribiría en la variable "cadena" los 10 primeros bytes de "Me llamo Juan y tengo 5 años" asprintfasprintf() hace lo mismo que sprintf() pero este reserva la memoria suficiente para contener la cadena de caracteres deseada, posteriormente se tendrá que usar free() en la cadena. Esta función no es estándar en C ni en POSIX. Se trata de una extensión de GNU. Su prototipo es: int asprintf(char **restrict strp, const char *restrict fmt, ...);
#define _GNU_SOURCE
#include <stdio.h>
[...]
int edad = 5;
char nombre[10] = "Juan";
char *cadena = NULL;
asprintf(&cadena, "Me llamo %s y tengo %d años", nombre, edad);
free(cadena);
Véase tambiénEnlaces externos |