久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4067|回復(fù): 0
收起左側(cè)

printf的格式詳解

[復(fù)制鏈接]
ID:102668 發(fā)表于 2016-1-16 03:38 | 顯示全部樓層 |閱讀模式
經(jīng)常在寫一些字符串的程序,會(huì)用到printf,sscanf,sprintf,F(xiàn)ORMAT.......之類的函數(shù),這些函數(shù),非常好用,代碼少,有的時(shí)候會(huì)起到意想不到的作用,但是一直對(duì)這個(gè)格式,不是很清楚的了解,今天上網(wǎng)仔細(xì)查找了一番,有點(diǎn)收獲。
Print formatted data to stdout
Writes to the standard output (stdout) a sequence of data formatted as the format argument specifies. After the format parameter, the function expects at least as many additional arguments as specified in format. Parametersformat String that contains the text to be written to stdout.It can optionally contain embedded format tags that are substituted by the values specified in subsequent argument(s) and formatted as requested.The number of arguments following the format parameters should at least be as much as the number of format tags.The format tags follow this prototype:

%[flags][width][.precision][length]specifier
Where specifier is the most significant one and defines the type and the interpretation of the value of the coresponding argument:
specifier    Output                                                   Example
c            Character                                                a
d            or i Signed decimal integer 392
e            Scientific notation (mantise/exponent) using e character 3.9265e+2
E            Scientific notation (mantise/exponent) using E character 3.9265E+2
f            Decimal floating point 392.65
g            Use the shorter of %e or %f 392.65
G            Use the shorter of %E or %f 392.65
o            Signed octal 610
s            String of characters sample
u            Unsigned decimal integer 7235
x            Unsigned hexadecimal integer 7fa
X            Unsigned hexadecimal integer (capital letters) 7FA
p            Pointer address B800:0000
n            Nothing printed. The argument must be a pointer to a signed int, where the number of characters written so far is stored.  
% A %        followed by another % character will write % to stdout.

The tag can also contain flags, width, .precision and modifiers sub-specifiers, which are optional and follow these specifications:


flags       description
-           Left-justify within the given field width; Right justification is the default (see width sub-specifier).
+           Forces to preceed the result with a plus or minus sign (+ or -) even for positive numbers. By default, only negative numbers are preceded with a - sign.
(space)     If no sign is going to be written, a blank space is inserted before the value.
#           Used with o, x or X specifiers the value is preceeded with 0, 0x or 0Xrespectively for values different than zero.Used with e, E and f, it forces the written output to contain a decimal point even if no digits would follow. By default, if no digits follow, no decimal point is written.Used with g or G the result is the same as with e or E but trailing zeros are not removed.
0         Left-pads the number with zeroes (0) instead of spaces, where padding is specified (see width sub-specifier).

width      description
(number)   Minimum number of characters to be printed. If the value to be printed is shorter than this number, the result is padded with blank spaces. The value is not truncated even if the result is larger.
*          The width is not specified in the format string, but as an additional integer value argument preceding the argument thas has to be formatted.
.          precision description
.          number For integer specifiers (d, i, o, u, x, X): precision specifies the minimum number of digits to be written. If the value to be written is shorter than this number, the result is padded with leading zeros. The value is not truncated even if the result is longer. A precision of 0 means that no character is written for the value 0.For e, E and f specifiers: this is the number of digits to be printed after the decimal point.For g and G specifiers: This is the maximum number of significant digits to be printed.For s: this is the maximum number of characters to be printed. By default all characters are printed until the ending null character is encountered.For c type: it has no effect.When no precision is specified, the default is 1. If the period is specified without an explicit value for precision, 0 is assumed.

.*       The precision is not specified in the format string, but as an additional integer value argument preceding the argument thas has to be formatted.

length   description
h        The argument is interpreted as a short int or unsigned short int (only applies to integer specifiers: i, d, o, u, x and X).
l        The argument is interpreted as a long int or unsigned long int for integer specifiers (i, d, o, u, x and X), and as a wide character or wide character string for specifiers c and s.
L        The argument is interpreted as a long double (only applies to floating point specifiers: e, E, f, g and G).  

additional arguments
Depending on the format string, the function may expect a sequence of additional arguments, each containing one value to be inserted instead of each %-tag specified in the format parameter, if any. There should be the same number of these arguments as the number of %-tags that expect a value.
Return Value
On success, the total number of characters written is returned.
On failure, a negative number is returned.
Example
/* fprintf example */
#include <stdio.h>
int main()
{
   printf ("Characters: %c %c \n", 'a', 65);
   printf ("Decimals: %d %ld\n", 1977, 650000);
   printf ("Preceding with blanks: %10d \n", 1977);
   printf ("Preceding with zeros: %010d \n", 1977);
   printf ("Some different radixes: %d %x %o %#x %#o \n", 100, 100, 100, 100, 100);
   printf ("floats: %4.2f %+.0e %E \n", 3.1416, 3.1416, 3.1416);
   printf ("Width trick: %*d \n", 5, 10);
   printf ("%s \n", "A string");
   return 0;
}

And here is the output:

Characters: a A
Decimals: 1977 650000
Preceding with blanks:       1977
Preceding with zeros: 0000001977
Some different radixes: 100 64 144 0x64 0144
floats: 3.14 +3e+000 3.141600E+000
Width trick:    10
A string


看了這篇文章以后,格式字符串,基本不成問題了。希望對(duì)大家有點(diǎn)幫助                                                                                             
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: www国产成人免费观看视频,深夜成人网 | 日韩免费一区二区 | 99视频在线看 | 中文字幕精品一区二区三区在线 | 91看片| 国产做a爱免费视频 | 伊人春色在线观看 | 国产精品久久久久久婷婷天堂 | 老司机久久 | 亚洲综合精品 | 中文字幕一区二区三区在线观看 | 欧美精品一区二区三区蜜桃视频 | 亚洲一区二区三区在线 | 欧美国产精品一区二区三区 | 国产精品成人一区二区三区 | 美女在线一区二区 | 91精品国产综合久久久久久丝袜 | 日本高清不卡视频 | 亚洲一本 | 国产小视频在线 | 欧美三级电影在线播放 | 高清av一区| 欧美日韩一区精品 | 国产亚洲成av人片在线观看桃 | 欧美日韩专区 | 大伊人久久 | 久草成人网 | 国产一区二区三区四 | 日批免费在线观看 | 亚洲国产一区二区在线 | 91偷拍精品一区二区三区 | 国产最好的av国产大片 | 日本在线一二 | 亚洲综合大片69999 | 男女一区二区三区 | 成人国产精品色哟哟 | 亚洲一区亚洲二区 | 97视频在线免费 | 亚洲国产欧美在线 | 亚洲一区二区黄 | 成人av高清在线观看 |