C language printf output format control, printf output format
C language printf output format Control
Printf is familiar to everyone, but it is rare to estimate its usage. Go to another article and organize it in another day.
1. Conversion specifiers
% A (% A) floating point number, hexadecimal number, and p-(P-) Notation (C99)
% C characters
% D signed decimal integer
% F floating point number (including float and doulbe)
% E (% E) floating point number index output [e-(E-) Note]
% G (% G) floating point number does not show meaningless zero "0"
% I signed decimal INTEGER (same as % d)
% U unsigned decimal integer % o octal integer
% X (% X) hexadecimal integer 0f (0F) e.g. 0x1234
% P pointer
% S string
% Output character %
2. Flag
Left alignment: "-" For example: "%-20 s"
Right alignment: "+" For example: "% + 20 s"
Space: If the symbol is positive, space is displayed. If the symbol is negative, "-" For example: "% 6.2f" is displayed"
#: No effect on Class c, s, d, and u; prefix o for Class o for output; prefix 0x for Class x for output; and prefix 0x for Class e, class g and Class f give the decimal point only when the result has decimal places.
The complete format of printf format control:
%-0 m. n l or h characters
The following describes the composition formats:
① %: Indicates the starting symbol of the format description, which is indispensable.
②-: "Yes" indicates the left-aligned output. If it is omitted, "yes" indicates the right-aligned output.
③ 0: if there is 0, it indicates that the specified vacant space is filled with 0. If it is omitted, it indicates that the specified vacant space is not filled.
④ M. n: m indicates the domain width, that is, the number of characters that the corresponding output item occupies on the output device. N indicates the precision. It is used to describe the decimal places of the output real number. If n is not specified, the implicit precision is n = 6 digits.
⑤ L or h: l refers to long type for integer type and double type for real type. H is used to modify the integer format characters to the short type.
Format characters
The format character is used to specify the data type and output format of the output item.
① D format: Used to output a decimal integer. It has the following usage:
% D: output according to the actual length of integer data.
% Md: m is the width of the specified output field. If the number of digits of the data is smaller than m, spaces are filled on the left side. If the number is greater than m, the data is output based on the actual number of digits.
% Ld: Output long integer data.
② O Format: outputs integers in the unsigned octal form. You can output long integers in "% lo" format. You can also specify the field width to output in "% mo" format.
Example:
Main () {int a =-1;
Printf ("% d, % o", a, );}
Running result:-1, 177777
Program parsing: the value of-1 is (1111111111111111) 2 in the inner storage unit (stored in the form of a supplemental code), and the value of-1 is (177777) 8.
③ X format: returns an integer in the unsigned hexadecimal format. You can output long integers in "% lx" format. You can also specify the field width to output in "% mx" format.
④ U format: returns an integer in unsigned decimal format. You can output long integers in "% lu" format. You can also specify the field width to output in "% mu" format.
⑤ C format: Output a character.
6 s format: Used to output a string. Usage
% S: for example, printf ("% s", "CHINA") Outputs A "CHINA" string (excluding double quotation marks ).
% Ms: The output string occupies the m column. If the length of the string is greater than m, the limit of m is exceeded and all strings are output. If the string length is less than m, spaces are left.
%-Ms: if the length of a string is less than m, the string is left-aligned and right-filled with spaces within the m column range.
% M. ns: the output occupies the m column, but only takes n characters from the left of the string. The n characters are output to the right of the m column with spaces left.
%-M. ns: the meaning of m and n is the same as above. n characters are output to the left of the m column range, and spaces are filled on the right. If n> m, the n value is automatically taken, that is, the normal output of n characters is guaranteed.
7. f format: Used to output real numbers (including Single and Double Precision) in decimal form. % F: If the width is not specified, All integers are output and 6 decimal places are output.
% M. nf: the output occupies m columns, where n decimal places exist. For example, if the value width is less than m, spaces are filled at the left end. %-M. nf: the output occupies n columns, where n decimal places exist. For example, if the value width is less than m, fill in spaces at the right end.
⑧ Eformat: returns the real number in exponential form. The following formats are available:
% E: The number part (also called the ending number) Outputs 6 decimal places, and the index part occupies 5 or 4 digits.
The characters % m. ne and %-m. ne: m, n, and "-" are the same as those before. Here, n refers to the decimal point of the numeric part of the data, and m indicates the width of the entire output data.
⑨ G format: automatically selects a short type of output in the f format or the E format, and does not output meaningless zero.
---------------------------------------
Further description of the printf function:
If you want to output the character "%", you should use two consecutive % characters in the "format control" string, for example:
Printf ("% f %", 1.0/3 );
0.333333% output.
For the single-precision number, only the first seven digits are valid digits and 6 decimal places when the % f format is used for output.
For the double-precision number, when the % lf format operator is used for output, the first 16 digits are valid digits with 6 decimal digits.
For the m. n format, you can also use the following method to represent char ch [20];
Printf ("% *. * s \ n", m, n, ch );
* Defines the total width and * defines the number of outputs. The Parameter m and n correspond to the outer parameters respectively. I think the advantage of this method is that the m and n parameters can be assigned outside the statement to control the output format.
Today (06.6.9), we see another output format: % n. You can assign the length value of the output string to another variable, as shown in the following example:
Int slen;
Printf ("hello world % n", & slen); after execution, the variable is assigned a value of 11.
When an 8-byte (64-bit) integer is output, the output format should be % llu % lld % llo;
Int main (int argc, char * argv [])
{
Time_t sec = 9223372036854775807; // that is, sec = 0x7fffffffffffffff;
Printf ("time = % lld \ n", sec );
Printf ("time = % llx \ n", sec );
Printf ("time = % 0 * llx \ n", 2 * sizeof (time_t), sec );
}
Output:
Time = 9223372036854775807
Time = 7 fffffffffffff
Time = 7 fffffffffffff
Use format of printf in C Language
Printf ("output format", variable name); this is the simplest usage
# Include "stdio. h"
Void main ()
{
Int;
Printf ("please input a number: \ n ");
Scanf ("% d", & );
Printf ("% d \ n", );
}
The simplest example of printf
For the C language printf output format
Printf ("% 5.3f", 125 );
According to the syntax, % f is used for float, and 125 should be written as a floating point number:
Printf ("% 5.3f", 125.0); 5.3 indicates that the field width is five characters long and has three decimal places. If the field width is insufficient, the output is based on actual needs.
Print 125.000
Printf ("% 3.1f", 25.796); 1 decimal point, followed by 4 homes 5, print 25.8
Printf ("% 5.2f", 25.796); 2 decimal places, followed by 4 homes 5, print 25.80
Printf ("% 5.2f", 1.25); 2 decimal places, with a field width of 5 characters (including numbers, decimal places, and negative numbers ).
If the field width is not enough, the output is based on actual needs. If the field width is too wide, the field is left blank.
Printf ("% 5.2f", 125.); 2 decimal places, with a field width of 5 characters, 125.00. If the field width is not enough, output as needed. If the field width is too wide, enter the blank.