Complete control Letter format of printf format
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 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. It has the following usage:
% F: 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.
####################################### Collection # #######################################
Expert guidance
The format of M. N can also be expressed as follows (for example)
Char ch [20];
Printf ("% *. * s \ n", M, N, CH );
* Defines the total width and 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.
I checked again and saw an article (View) saying that the output in this format has been confirmed as a security risk and has been disabled. Search again to find out what overflow, vulnerabilities, and so on are all used for this usage. You can find one: Format String Attack notes.