lunes, 1 de junio de 2009

Salida con formato

printf es la funciòn bàsica utilizada para salida con formato; es llamada en la forma:

printf(control, argl, arg2,...)

char *control;

Esta funciòn acepta un nùmero variable de argumentos, convirtièndolos, formateàndolos e imprimièndolos bajo las especificaciones incluidas en "control". Los caracteres del string de control se vuelcan en el fichero de salida estàndar, salvo el metacaràcter "%", que se emplea como una especificaciòn de formato para controlar la impresiòn de los argumentos.

• un signo menos "-", indicando que el siguiente argumento debe imprimirse justificando a la izquierda en su campo de salida;

• una cadena de dìgitos, especificando el tamaño mìnimo del campo de salida para ese argumento. Si el argumento ya formateado ocupa menos caracteres que la anchura del campo que le ha sido asignado se completará con caracteres por la izquierda (o por la derecha si se ha especificado justificación a la izquierda).

Si la especificación de la anchura del campo contiene un cero como primer carácter (por ejemplo OSd), la longitud total del campo se completará con ceros en lugar de con espacios en blanco. La inclusión de este cero por la izquierda no debe confundirse en ningún caso con la expresión de una constante en octal (por ejemplo, el carácter espacio en blanco, ASCII 32 en decimal, se expresa como 040 en octal).

A diferencia de la salida con formato en Fortran, printf no trunca la conversión de argumentos en caso de que necesiten una extensión mayor que la especificada para el campo de salida;

• un punto, separando el ancho del campo de salida, de la precisiòn;

• una cadena de dìgitos que puede especificar tanto el nùmero màximo de caracteres a imprimir de una cadena, como el nùmero de dìgitos a imprimir a la derecha del punto decimal cuando se están imprimiendo números en coma flotante (float o double);

• una ele "l", que indica que el siguiente argumento es un long it, en lugar de un int;

• algunas implementaciones de printf interpretan el caràcter asterisco "*" como una anchura de campo o precisión, con el significado de que el siguiente argumento indicará realmente la anchura del campo o precisión del argumento a imprimir. Por ejemplo:

printf("%.*s", longitud, cadena);

imprimirá al menos "longitud" caracteres de la cadena de caracteres "cadena".


Los caracteres de conversiòn de salida son:

d- Convierte el argumento entero a un número decimal con signo.

o- Convierte su argumento (entero) a base octal.

x- El argumento entero se convierte a hexadecimal.

u- El argumento entero se convierte a notación decimal sin signo.

c- Interpreta su argumento como un único carácter.

s- Considera su argumento una cadena (string).

e- Convierte su argumento en coma flotante (interpretado como double, porque C siempre pasa los números en coma flotante como double) a notación exponencial, con signo, mantisa y exponente:

[-]m.nnnnE[-]xx

La longitud de la cadena de enes "n" viene determinada por la precisión, que es de 6 por defecto. (Recordemos que float proporcionaba 6 dígitos de precisión y double 15.) * • ' - El argumento en coma flotante se expresa en notación de coma fija:

[-jmmm.nnnn

La longitud de la cadena de enes "n" se toma nuevamente de 6 por defecto.

g- Convierte su argumento en coma flotante a formato "%f o "%e", dependiendo de cuál de los dos proporcione una cadena de menor longitud.

Cualquier otro caràcter distinto de los especificados anteriormente y que siga a un signo "%" se imprimirá literalmente. Así:

printf("%%");

Imprimirá un único carácter"'%".

La apariciòn de los anteriores caracteres en mayùsculas (D, O, X, U, E, F o G) se interpreta como si una ele "l" precediese al caràcter correspondiente en, minúculas. Así

printf("%D", valor);

es equivalente a

printf("%ld", valor);

La salida con formato especificada por printf y enviada por esta función al fichero de salida estándar tambièn se puede enviar a otro fichero o a una cadena de caracteres, por medio de las funciones fprintf y sprintf, respectivamente.

fprintf(fp, control, argl, arg2,...)

FILE *fp;

char *cntrol;

realiza su salida sobre el fichero especificado por fp.

sprintf(string, control, argl, arg2,...)

lleva su salida al array string de acuerdo con las especificaciones de formato incluidas, en lugar de poner la salida en un fichero.

1 comentario:

alex dijo...

puede poner unos ejemplos

Publicar un comentario