Red de conocimientos sobre prescripción popular - Conocimiento del confinamiento - ¿Qué método se utiliza para enviar datos al dispositivo de salida estándar?

¿Qué método se utiliza para enviar datos al dispositivo de salida estándar?

La función printf() es una función de formato de impresión, generalmente utilizada para enviar información al dispositivo de salida estándar en un formato específico.

El formato de llamada de la función printf() es: printf(",<parameter list>);

La cadena de formato incluye dos partes:

Algo es un carácter normal y se generará tal como está; la otra parte es formatear los caracteres especificados, comenzando con "%", seguido de uno o varios caracteres especificados, para determinar el formato del contenido de salida

<. p>Tabla de parámetros. Es una serie de parámetros que deben generarse. El número debe ser el mismo que el número de parámetros de salida descritos en la cadena de formato. Los parámetros están separados por "," y el orden es uno a uno. -uno, de lo contrario se producirán errores inesperados

/*********************************. ************** **********************/

El formato completo del control de formato printf:

%-0 m.n l o h formato Caracteres

La siguiente es una descripción de los elementos que componen la descripción del formato:

①%: Indica el símbolo inicial de la descripción del formato, que es esencial

②-: Sí - significa salida alineada a la izquierda, si se omite, significa salida alineada a la derecha

③0: 0. significa que los espacios especificados se llenan con 0, si se omite, significa que los espacios especificados no se llenan

④ m.n: m se refiere al ancho del campo, es decir, el número de caracteres ocupados por el. elemento de salida correspondiente en el dispositivo de salida.

n se refiere a la precisión, que se utiliza para especificar el número de decimales para el número real de salida. Cuando, la precisión implícita es n = 6 bits. p>

⑤l o h:l representa el tipo largo del entero, y h se usa para modificar el carácter de formato del tipo entero a un entero corto

Resumen de formato:

(1) El formato más utilizado es %d, lo que significa imprimir un número entero en forma de 10.

Si genera un número entero Si Si el número de dígitos en los datos. es menor que m, el extremo izquierdo se llena con espacios; si es mayor que m, se genera el número real de dígitos

Salida de datos enteros largos. El formato es similar al formato %d. excepto que se genera un entero de 10 decimales sin signo.

Los enteros largos se pueden generar en el formato "%lu". También puede especificar el ancho del campo que se generará en el formato "%mu". p>

El formato (3)o requiere la salida de números enteros octales, y los números enteros se pueden generar en forma octal sin signo.

Los enteros largos se pueden generar en formato ". %lo". También puede especificar la salida del ancho del campo en el formato "%mo".

(4) Los formatos %x y %x solicitan la salida de un entero hexadecimal de 16.

En el formato %x, las letras minúsculas A, B, C, D, E y F se utilizan para representar números entre 10 y 15, y los números enteros se generan en formato hexadecimal sin signo.

Los números enteros largos se pueden generar en formato "%lx". El ancho del campo también se puede especificar y generar en formato "%mx".

En el formato %X, las letras mayúsculas A, B, C, D, E y F se utilizan para representar números entre 10 y 15.

* * *Igual: los enteros octales y hexadecimales siempre se tratan como números sin signo.

(5) Utilice el formato %s para imprimir una cadena y el parámetro correspondiente debe ser un puntero de carácter. Los caracteres que se generarán comienzan desde la dirección señalada por el puntero y terminan cuando aparece el carácter nulo (' \0 ').

%s: Por ejemplo, printf("%s", "CHINA") genera la cadena "CHINA" (excluyendo las comillas dobles).

%ms: La cadena de salida ocupa m columnas. Si la longitud de la cadena en sí es mayor que m, se excederá el límite para obtener m y se generarán todas las cadenas. Si la longitud de la cadena es inferior a m, los espacios en blanco que quedan se rellenan.

%-ms: si la longitud de la cadena es menor que m, la cadena se llenará con espacios a izquierda y derecha dentro del rango de m columnas.

%m.ns: La salida ocupa m columnas, pero solo toma los n caracteres izquierdos de la cadena. Estos n caracteres se muestran en el lado derecho de la columna M, con espacios en el lado izquierdo.

%-m.ns: donde m y n tienen el mismo significado, se generan n caracteres en el lado izquierdo del rango de columnas m y los espacios se llenan en el lado derecho. Si n & gtm, el valor de n se toma automáticamente, lo que garantiza una salida normal de n caracteres.

(6)El formato %c se utiliza para imprimir un solo carácter: por ejemplo:

printf("%c ", c); equivalente a putchar(c); p>

(7) Se utilizan tres formatos, %g, %f y %e para imprimir valores de punto flotante.

El formato %g es particularmente útil para imprimir números de punto flotante que no necesitan estar alineados por columna. Tiene dos funciones:

Primero, eliminar ceros extra al final del número (números que no llegan a seis dígitos)

Segundo, retener seis dígitos significativos (seis números extra)

Al imprimir números de punto flotante usando el formato %e, siempre se muestra la forma exponencial: por ejemplo, cuando se genera pi, es 3.141593e+00.

La diferencia entre los dos:

El número impreso en formato %g tiene un total de ***6 dígitos significativos.

Imprime 6 dígitos significativos después del punto decimal en formato %e.

La representación %f exponente de números de coma flotante está prohibida. Entonces la salida de pi es: 3,141593.

(Pero preste atención a sus requisitos de precisión: también hay 6 dígitos significativos después del punto decimal).

(8) El formato %% se utiliza para imprimir el carácter %.

(9) %E y %G solo usan letras mayúsculas (E) en lugar de letras minúsculas (E) al generar.

Formato ⑦f: se utiliza para generar números reales (incluidas precisión simple y precisión doble), y generar en forma decimal. Hay varios usos:

%f: no se especifica ningún ancho, se generan todas las partes enteras y se generan 6 decimales.

%m.nf: La salida * * * ocupa m columnas, incluidas n posiciones decimales, como el margen izquierdo del valor con un ancho menor que m.

%-m.nf: La salida * * * ocupa n columnas, incluidas n posiciones decimales, por ejemplo, el ancho del valor es menor que el extremo derecho de m para completar los espacios.

Formato ⑧e: genera números reales en forma exponencial. Puede utilizar la siguiente forma:

%e: la parte numérica (también llamada mantisa) genera 6 dígitos decimales y la parte exponencial ocupa 5 o 4 dígitos.

Los caracteres %m.ne y %-m.ne: m, n y "-" tienen el mismo significado que antes. Aquí n se refiere al número de decimales en la parte numérica de los datos y m se refiere al ancho de todos los datos de salida.

Formato ⑨g: seleccione automáticamente el formato más corto de formato F o E para la salida, y no genere ceros sin sentido.

/****************************************** ***********************/

Int sin signo i = 295

printf("% d \n ",I);

295

Presione cualquier tecla para continuar

(1). Puede insertar un Número para representar el ancho máximo del campo.

Por ejemplo, %2d significa generar un número entero de 3 dígitos, lo cual no es suficiente para una alineación a la derecha de 2 dígitos.

Por ejemplo, %5d significa generar un número entero de 3 dígitos, lo cual no es suficiente para una justificación derecha de 5 dígitos.

Por ejemplo, %10d significa generar un número entero de 3 dígitos, lo cual no es suficiente para una alineación a la derecha de 10d.

Int sin signo i = 295

printf("%2d\n ", I);

printf("%5d\n ", I);

printf("%10d\n ",I);

295

295

295

Presione cualquier tecla para continuar

(2). Complete 0 o algo más.

Por ejemplo, %02d significa generar un número entero de 3 dígitos. Si 2 dígitos no están alineados a la derecha, agregue 0.

Por ejemplo, %05d significa generar un número entero de 3 dígitos. Si no es suficiente para 5 dígitos, agregue 0.

Por ejemplo, %010d significa generar un número entero de 3 dígitos, con menos de 10 dígitos justificados a la derecha y 0 agregado.

Int sin signo i = 295

printf("%02d\n ",I);

printf("%05d\n ",I);

printf("%010d\n ",I);

295

00295

0000000295

Presione cualquier tecla para continuar

(3). Números negativos

int I =-295;

printf("%02d\n ", I);

printf("%05d\n ",I);

printf("%010d\n ",I);

-295

-0295

-000000295

Presione cualquier tecla para continuar

(4) La salida se puede controlar para que esté alineada a la izquierda o a la derecha. alineado, es decir, en "%" Agregar un signo "-" entre las letras y indica que la salida está alineada a la izquierda; de lo contrario, está alineada a la derecha.

Unsigned int i = 295

printf("%-02d\n ", I

printf("%-05d\n ", I); );

printf("%-010d\n ", I);

295

295

295

Presione cualquier tecla para continuar

(5). Puede agregar una letra L minúscula entre "%" y la letra para indicar que la salida es un número largo.

Por ejemplo, %ld significa generar un número entero largo.

%lf significa generar números de punto flotante doble.

(6).

%9.2f significa que el ancho del campo de salida es un número de coma flotante de 9, en el que el lugar decimal es 2, el lugar entero es 6 y el punto decimal ocupa un lugar, lo cual no es suficiente para alinearlo a la derecha a 9 bits.

Por ejemplo, %6.9s significa mostrar una cadena cuya longitud no sea menor que 6 ni mayor que 9. Si es mayor que 9, se eliminará el contenido después del noveno carácter.

/*

Int sin signo i = 295

printf("%d\n ", I);

printf( " %1d\n ",I);

printf("%09d\n ",I);

printf("%09d\n ",(carácter sin firmar)I ) ;

printf("%9d\n ", (carácter sin firmar)I

printf("%-9d\n ", (carácter sin firmar)I);< / p>

*/

/*

295

295

000000295

000000039

p>

39

39

Presiona cualquier tecla para continuar

*/

/******* ************************************************** * **********/

El formato de m.n también se puede expresar de la siguiente manera (por ejemplo)

int m=10, n = 5 ;

char ch[]= "abcdefghijklmnopqrst";

printf("%*.*s\n", m, n, ch); //La salida es abcde.

El frente * define el ancho total y el reverso define la cantidad de salida, correspondiente a los parámetros externos myn respectivamente.

Creo que la ventaja de este método es que puedes asignar valores a los parámetros M y N fuera de la declaración para controlar el formato de salida.

/****************************************** ***********************/

" %08lx\n ", 4 bytes

" %04x\n", 2 bytes

"%-2.2BX", 1 byte