fbpx
Wikipedia

printf

Numerosos lenguajes de programación implementan una función printf (print formatted), para mostrar una cadena con formato. Esta, originaria del lenguaje de programación C, tiene un prototipo similar al siguiente:

Un ejemplo de la función printf.
 int printf(const char *formato, ...) 

La cadena constante formato provee una descripción de la salida, con placeholders marcados por caracteres de escape "%", para especificar la localización relativa y el tipo de salida que la función debe producir.

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.

Ejemplo

El clásico ejemplo de Hola Mundo! para mostrar esta cadena de texto.

#include <stdio.h>   int main(void) {  printf("¡Hola, mundo!\n");  return 0; } 

Formateadores

printf permite dar formato específico a la salida, aquí algunos ejemplos:

Formateador Salida
%d o %i entero en base 10 con signo (int)

printf("El numero entero en base 10 es: %d", -10);

%u entero en base 10 sin signo (int)
%o entero en base 8 sin signo (int)
%x entero en base 16, letras en minúscula (int)
%X entero en base 16, letras en mayúscula (int)
%f Coma flotante decimal de precisión simple (float)
%lf Coma flotante decimal de precisión doble (double)
%ld Entero de 32 bits (long)
%lu Entero sin signo de 32 bits (unsigned long)
%e La notación científica (mantisa / exponente), minúsculas (decimal precisión simple o doble)
%E La notación científica (mantisa / exponente), mayúsculas (decimal precisión simple o doble)
%c carácter (char)
%s cadena de caracteres (string)

Truncamiento

Los 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 
Formateador Salida
%07i justificado a la derecha, 7 dígitos de largo, sin relleno
%.7i largo mínimo de 7 dígitos, justificado a la derecha, rellena con ceros
%8.2f tamaño total de 8 dígitos, con dos decimales
%.*f”',x,d) tamaño predeterminado,x números decimales
%*.*f”,x,y,d) tamaño igual a x, y números decimales
%s cadena terminada en null
%5s primeros cinco caracteres o delimitador
%.5s primeros cinco caracteres, sin tener en cuenta el delimitador
%20.5s primeros cinco caracteres, justificados a la derecha, con 20 caracteres de largo
%-20.5s primeros cinco caracteres, justificados a la izquierda, con 20 caracteres de largo

Funciones derivadas

sprintf

Prototipo:.

 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

fprintf

fprintf 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, ...) 
donde:
  • *stream: es el flujo del archivo abierto, es decir la variable·puntero declarada a fopen
  • *format. sería lo que se quiere guardar.

snprintf

snprintf 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, ...) 
donde:
  • char *str: Cadena de destino.
  • size_t size: Número de bytes a escribir. Se suele poner el tamaño de la cadena destino.
  • const char *format,... : Formato habitual de printf.

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"

asprintf

asprintf() 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, ...); 
donde:
  • strp es un puntero a la cadena de destino
  • fmt es el formato habitual
 #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én

Enlaces externos

  • printf(3): conversión de salida formateada – Subrutinas en el Manual de Debian
  •   Datos: Q838016

printf, numerosos, lenguajes, programación, implementan, función, print, formatted, para, mostrar, cadena, formato, esta, originaria, lenguaje, programación, tiene, prototipo, similar, siguiente, ejemplo, función, const, char, formato, cadena, constante, forma. Numerosos lenguajes de programacion implementan una funcion printf print formatted para mostrar una cadena con formato Esta originaria del lenguaje de programacion C tiene un prototipo similar al siguiente Un ejemplo de la funcion printf int printf const char formato La cadena constante formato provee una descripcion de la salida con placeholders marcados por caracteres de escape para especificar la localizacion relativa y el tipo de salida que la funcion debe producir Por ejemplo en C printf Color s Numero1 d Numero2 05d Hexadecimal x Real 5 2f n rojo 12345 89 255 3 14 imprimira la siguiente linea incluyendo el caracter de nueva linea n Color rojo Numero1 12345 Numero2 00089 Hexadecimal ff Real 3 14 La funcion printf retorna el numero de caracteres impresos o un valor negativo si ocurre un error Indice 1 Ejemplo 2 Formateadores 2 1 Truncamiento 3 Funciones derivadas 3 1 sprintf 3 2 fprintf 3 3 snprintf 3 4 asprintf 4 Vease tambien 5 Enlaces externosEjemplo EditarEl clasico ejemplo de Hola Mundo para mostrar esta cadena de texto include lt stdio h gt int main void printf Hola mundo n return 0 Formateadores Editarprintf permite dar formato especifico a la salida aqui algunos ejemplos Formateador Salida d o i entero en base 10 con signo int printf El numero entero en base 10 es d 10 u entero en base 10 sin signo int o entero en base 8 sin signo int x entero en base 16 letras en minuscula int X entero en base 16 letras en mayuscula int f Coma flotante decimal de precision simple float lf Coma flotante decimal de precision doble double ld Entero de 32 bits long lu Entero sin signo de 32 bits unsigned long e La notacion cientifica mantisa exponente minusculas decimal precision simple o doble E La notacion cientifica mantisa exponente mayusculas decimal precision simple o doble c caracter char s cadena de caracteres string Truncamiento Editar Los formateadores permiten ser modificados para definir cantidad de digitos o caracteres introduciendo los parametros de cantidad de digitos y digitos significativos como se puede notar en el siguiente ejemplo printf de digitos a la derecha del punto de digitos 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 Formateador Salida 07i justificado a la derecha 7 digitos de largo sin relleno 7i largo minimo de 7 digitos justificado a la derecha rellena con ceros 8 2f tamano total de 8 digitos con dos decimales f x d tamano predeterminado x numeros decimales f x y d tamano igual a x y numeros decimales s cadena terminada en null 5s primeros cinco caracteres o delimitador 5s primeros cinco caracteres sin tener en cuenta el delimitador 20 5s primeros cinco caracteres justificados a la derecha con 20 caracteres de largo 20 5s primeros cinco caracteres justificados a la izquierda con 20 caracteres de largoFunciones derivadas Editarsprintf Editar Prototipo int sprintf char str const char format Devolviendo un entero que indica el numero de caracteres leidos Ejemplo de uso C include lt stdio h gt 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 tamano tam buffer i tam cad sprintf cadena d numerito Pasamos a cadena el numero de entero a char for i 0 j tam buffer i lt 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 Mostraria Hemos escrito un ESLOGAN con sprintf 78989 fprintf Editar fprintf 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 funcion fopen Su prototipo dentro del archivo de cabecera stdio h seria int fprintf FILE stream const char format donde stream es el flujo del archivo abierto es decir la variable puntero declarada a fopen format seria lo que se quiere guardar snprintf Editar snprintf 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 numero de bytes que queremos escribir pudiendo evitar asi mas facilmente un problema de desbordamiento de buffer Su prototipo dentro del archivo de cabecera stdio h seria int snprintf char str size t size const char format donde char str Cadena de destino size t size Numero de bytes a escribir Se suele poner el tamano de la cadena destino const char format Formato habitual de printf Veamos un ejemplo int edad 5 char nombre 10 Juan char cadena 10 snprintf cadena sizeof cadena Me llamo s y tengo d anos nombre edad En este caso snprintf escribiria en la variable cadena los 10 primeros bytes de Me llamo Juan y tengo 5 anos asprintf Editar asprintf hace lo mismo que sprintf pero este reserva la memoria suficiente para contener la cadena de caracteres deseada posteriormente se tendra que usar free en la cadena Esta funcion no es estandar en C ni en POSIX Se trata de una extension de GNU Su prototipo es int asprintf char restrict strp const char restrict fmt donde strp es un puntero a la cadena de destino fmt es el formato habitual define GNU SOURCE include lt stdio h gt int edad 5 char nombre 10 Juan char cadena NULL asprintf amp cadena Me llamo s y tengo d anos nombre edad free cadena Vease tambien Editarscanf stdio h Lenguaje de programacion C PHPEnlaces externos Editarprintf 3 conversion de salida formateada Subrutinas en el Manual de Debian Datos Q838016 Obtenido de https es wikipedia org w index php title Printf amp oldid 137906105 fprintf, wikipedia, wiki, leyendo, leer, libro, biblioteca,

español

, española, descargar, gratis, descargar gratis, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, imagen, música, canción, película, libro, juego, juegos