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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3945|回復: 0
打印 上一主題 下一主題
收起左側

printf的格式詳解

[復制鏈接]
跳轉到指定樓層
樓主
ID:102668 發表于 2016-1-16 03:38 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
經常在寫一些字符串的程序,會用到printf,sscanf,sprintf,FORMAT.......之類的函數,這些函數,非常好用,代碼少,有的時候會起到意想不到的作用,但是一直對這個格式,不是很清楚的了解,今天上網仔細查找了一番,有點收獲。
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


看了這篇文章以后,格式字符串,基本不成問題了。希望對大家有點幫助                                                                                             
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久鲁视频| 日韩精品在线看 | 国产精品国产三级国产aⅴ中文 | 精品久久久久久久久久 | 久久精品男人的天堂 | 中文字幕四虎 | 久久免费香蕉视频 | 开操网| 精品99在线| 久在线精品视频 | 艹逼网| 日韩成人在线网址 | 欧美性成人| 国产成人精品午夜视频免费 | 中文字幕第二十页 | 欧美一级三级 | 精品欧美一区二区三区久久久 | 日韩一区二区三区在线看 | 欧美一级黑人aaaaaaa做受 | 久久美女网 | 精品国产一区二区三区成人影院 | 91国在线视频| 午夜成人在线视频 | 日韩毛片免费看 | 国产精品久久久 | 国产一区二区三区网站 | 五月激情婷婷六月 | 蜜桃精品视频在线 | 99久久精品视频免费 | 日韩欧美1区2区 | 国产综合久久久久久鬼色 | 久久久网 | 日韩中文字幕在线 | 亚洲欧美综合 | 国产精品久久久久久久久久三级 | 日韩欧美专区 | 欧美一区二区三区久久精品 | 中文字幕av色 | 日本免费一区二区三区四区 | 日韩精品免费看 | 国产在线一区二区 |