PRINTF.3
上传用户:datang2001
上传日期:2007-02-01
资源大小:53269k
文件大小:6k
源码类别:

操作系统开发

开发平台:

C/C++

  1. ." @(#)printf.3s 6.3 (Berkeley) 6/5/86
  2. ."
  3. .TH PRINTF 3 "June 5, 1986"
  4. .AT 3
  5. .SH NAME
  6. printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - formatted output conversion
  7. .SH SYNOPSIS
  8. .nf
  9. .ft B
  10. #include <sys/types.h>
  11. #include <stdio.h>
  12. #include <stdarg.h>
  13. int printf(const char *fIformatfP fR[fP, fIargfPfR] ...fP);
  14. int fprintf(FILE *fIstreamfP, const char *fIformatfP fR[fP, fIargfPfR] ...fP);
  15. int sprintf(char *fIsfP, const char *fIformatfP fR[fP, fIargfPfR] ...fP);
  16. int snprintf(char *fIsfP, size_t fInfP, const char *fIformatfP fR[fP, fIargfPfR] ...fP);
  17. int vprintf(const char *fIformatfP, va_list fIargsfP);
  18. int vfprintf(FILE *fIstreamfP, const char *fIformatfP, va_list fIargsfP);
  19. int vsprintf(char *fIsfP, const char *fIformatfP, va_list fIargsfP);
  20. int vsnprintf(char *fIsfP, size_t fInfP, const char *fIformatfP, va_list fIargsfP);
  21. .ft R
  22. .fi
  23. .SH DESCRIPTION
  24. .B Printf
  25. places output on the standard output stream
  26. .BR stdout .
  27. .B Fprintf
  28. places output on the named output
  29. .IR stream .
  30. .B Sprintf
  31. places `output' in the string
  32. .IR s ,
  33. followed by the character `e0'.
  34. .B Snprintf
  35. (Minix-vmd only)
  36. is like
  37. .B sprintf
  38. except that no more than
  39. .IR n -1
  40. characters are written to
  41. .I s
  42. followed by a `e0'.
  43. .PP
  44. The
  45. .B v*printf
  46. functions can be used to make functions like the first four by using the
  47. .BR stdarg (3)
  48. method to process the argument.
  49. .PP
  50. Each of these functions converts, formats, and prints its arguments after
  51. the first under control of the first argument.
  52. The first argument is a character string which contains two types of objects:
  53. plain characters, which are simply copied to the output stream,
  54. and conversion specifications, each of which causes conversion and printing
  55. of the next successive
  56. .IR arg .
  57. .PP
  58. Each conversion specification is introduced by the character
  59. .BR % .
  60. The remainder of the conversion specification includes
  61. in the following order
  62. .TP
  63. (bu
  64. Zero or more of following flags:
  65. .RS
  66. .TP
  67. (bu
  68. a `#' character
  69. specifying that the value should be converted to an ``alternate form''.
  70. For 
  71. .BR c ,
  72. .BR d ,
  73. .BR s ,
  74. and
  75. .BR u
  76. conversions, this option has no effect.  For 
  77. .B o
  78. conversions, the precision of the number is increased to force the first
  79. character of the output string to a zero.  For 
  80. .BR x ( X )
  81. conversion, a non-zero result has the string 
  82. .BR 0x ( 0X )
  83. prepended to it.  For 
  84. .BR e ,
  85. .BR E ,
  86. .BR f ,
  87. .BR g ,
  88. and
  89. .BR G
  90. conversions, the result will always contain a decimal point, even if no
  91. digits follow the point (normally, a decimal point only appears in the
  92. results of those conversions if a digit follows the decimal point).  For
  93. .B g
  94. and
  95. .B G
  96. conversions, trailing zeros are not removed from the result as they
  97. would otherwise be.
  98. .TP
  99. (bu
  100. a minus sign `-' which specifies
  101. .I "left adjustment"
  102. of the converted value in the indicated field;
  103. .TP
  104. (bu
  105. a `+' character specifying that there should always be
  106. a sign placed before the number when using signed conversions.
  107. .TP
  108. (bu
  109. a space specifying that a blank should be left before a positive number
  110. during a signed conversion.  A `+' overrides a space if both are used.
  111. .RE
  112. .TP
  113. (bu
  114. an optional digit string specifying a
  115. .I "field width;"
  116. if the converted value has fewer characters than the field width
  117. it will be blank-padded on the left (or right,
  118. if the left-adjustment indicator has been given) to make up the field width;
  119. if the field width begins with a zero,
  120. zero-padding will be done instead of blank-padding;
  121. .TP
  122. (bu
  123. an optional period
  124. .RB ` . '
  125. which serves to separate the field width from the next digit string;
  126. .TP
  127. (bu
  128. an optional digit string specifying a
  129. .I precision
  130. which specifies the number of digits to appear after the
  131. decimal point, for e- and f-conversion, or the maximum number of characters
  132. to be printed from a string;
  133. .TP
  134. (bu
  135. the character
  136. .B l
  137. specifying that a following
  138. .BR d ,
  139. .BR o ,
  140. .BR x ,
  141. or
  142. .B u
  143. corresponds to a long integer
  144. .IR arg .
  145. .TP
  146. (bu
  147. a character which indicates the type of
  148. conversion to be applied.
  149. .PP
  150. A field width or precision may be `*' instead of a digit string.
  151. In this case an integer
  152. .I arg
  153. supplies
  154. the field width or precision.
  155. .PP
  156. The conversion characters
  157. and their meanings are
  158. .TP
  159. .B dox
  160. The integer
  161. .I arg
  162. is converted to decimal, octal, or
  163. hexadecimal notation respectively.
  164. .TP
  165. .B X
  166. Like
  167. .BR x ,
  168. but use upper case instead of lower case.
  169. .TP
  170. .B f
  171. The float or double
  172. .I arg
  173. is converted to decimal notation
  174. in the style `[fB-fR]ddd.ddd'
  175. where the number of d's after the decimal point
  176. is equal to the precision specification
  177. for the argument.
  178. If the precision
  179. is missing,
  180. 6 digits are given;
  181. if the precision is explicitly 0, no digits and
  182. no decimal point are printed.
  183. .TP
  184. .B e
  185. The float or double
  186. .I arg
  187. is converted in the style
  188. `[fB-fR]dfB.fRdddfBefR(+-dd'
  189. where there is one digit before the decimal point and
  190. the number after is equal to the
  191. precision specification for the argument;
  192. when the precision is missing,
  193. 6 digits are produced.
  194. .TP
  195. .B g
  196. The float or double
  197. .I arg
  198. is printed in style
  199. .BR d ,
  200. in style
  201. .BR f ,
  202. or in
  203. style
  204. .BR e ,
  205. whichever gives full precision in minimum space.
  206. .TP
  207. .B c
  208. The character
  209. .I arg
  210. is printed.
  211. .TP
  212. .B s
  213. .I Arg
  214. is taken to be a string (character pointer)
  215. and characters from the string are printed until
  216. a null character or until
  217. the number of characters indicated by the precision
  218. specification is reached;
  219. however if the precision is 0 or missing
  220. all characters up to a null are printed.
  221. .TP
  222. .B u
  223. The unsigned integer
  224. .I arg
  225. is converted to decimal
  226. and printed.
  227. .TP
  228. .B %
  229. Print a `%'; no argument is converted.
  230. .PP
  231. In no case does a non-existent or small field width
  232. cause truncation of a field;
  233. padding takes place only if the specified field
  234. width exceeds the actual width.
  235. Characters generated by
  236. .B printf
  237. are printed by 
  238. .BR putc (3).
  239. .PP
  240. .B Examples
  241. .br
  242. To print a date and time in the form `Sunday, July 3, 10:02',
  243. where
  244. .I weekday
  245. and
  246. .I month
  247. are pointers to null-terminated strings:
  248. .PP
  249. .RS
  250. printf("%s, %s %d, %02d:%02d", weekday, month, day, hour, min);
  251. .RE
  252. .PP
  253. To print
  254. .if n pi
  255. .if t (*p
  256. to 5 decimals:
  257. .IP
  258. printf("pi = %.5f", 4*atan(1.0));
  259. .SH "SEE ALSO"
  260. .BR putc (3),
  261. .BR scanf (3),
  262. .BR ecvt (3),
  263. .BR stdarg (3).