SCANF.3
上传用户:jnzhq888
上传日期:2007-01-18
资源大小:51694k
文件大小:6k
源码类别:

操作系统开发

开发平台:

WINDOWS

  1. ." @(#)scanf.3s 6.1 (Berkeley) 5/15/85
  2. ."
  3. .TH SCANF 3  "May 15, 1985"
  4. .AT 3
  5. .SH NAME
  6. scanf, fscanf, sscanf, vscanf, vfscanf, vsscanf - formatted input conversion
  7. .SH SYNOPSIS
  8. .nf
  9. .ft B
  10. #include <stdio.h>
  11. #include <stdarg.h>
  12. int scanf(const char *fIformatfP fR[fP, fIpointerfPfR] ...fP)
  13. int fscanf(FILE *fIstreamfP, const char *fIformatfP fR[fP, fIpointerfPfR] ...fP)
  14. int sscanf(const char *fIsfP, const char *fIformatfP fR[fP, fIpointerfPfR] ...fP)
  15. int vscanf(const char *fIformatfP, va_list fIargsfP)
  16. int vfscanf(FILE *fIstreamfP, const char *fIformatfP, va_list fIargsfP)
  17. int vsscanf(const char *fIsfP, const char *fIformatfP, va_list fIargsfP)
  18. .SH DESCRIPTION
  19. .B Scanf
  20. reads from the standard input stream
  21. .BR stdin .
  22. .B Fscanf
  23. reads from the named input
  24. .IR stream .
  25. .B Sscanf
  26. reads from the character string
  27. .IR s .
  28. Each function reads characters, interprets
  29. them according to a format, and stores the results in its arguments.
  30. Each expects as arguments
  31. a control string
  32. .IR format ,
  33. described below,
  34. and a set of
  35. .I pointer
  36. arguments
  37. indicating where the converted input should be stored.
  38. .PP
  39. The
  40. .B v*scanf
  41. functions can be used to make functions like the first three by using the
  42. .BR stdarg (3)
  43. method to process the argument pointers.
  44. .PP
  45. The
  46. control string
  47. usually contains
  48. conversion specifications, which are used to direct interpretation
  49. of input sequences.
  50. The control string may contain:
  51. .TP 4
  52. 1.
  53. Blanks, tabs or newlines,
  54. which match optional white space in the input.
  55. .TP 4
  56. 2.
  57. An ordinary character (not %) which must match
  58. the next character of the input stream.
  59. .TP 4
  60. 3.
  61. Conversion specifications, consisting of the
  62. character
  63. .BR % ,
  64. an optional assignment suppressing character
  65. .BR * ,
  66. an optional numerical maximum field width, and a conversion
  67. character.
  68. .PP
  69. A conversion specification directs the conversion of the
  70. next input field; the result
  71. is placed in the variable pointed to by the corresponding argument,
  72. unless assignment suppression was
  73. indicated by
  74. .BR * .
  75. An input field is defined as a string of non-space characters;
  76. it extends to the next inappropriate character or until the field
  77. width, if specified, is exhausted.
  78. .PP
  79. The conversion character indicates the interpretation of the
  80. input field; the corresponding pointer argument must
  81. usually be of a restricted type.
  82. The following conversion characters are legal:
  83. .TP 4
  84. .B  %
  85. a single `%' is expected
  86. in the input at this point;
  87. no assignment is done.
  88. .TP 4
  89. .B  d
  90. a decimal integer is expected;
  91. the corresponding argument should be an integer pointer.
  92. .TP 4
  93. .B  o
  94. an octal integer is expected;
  95. the corresponding argument should be a integer pointer.
  96. .TP 4
  97. .B  x
  98. a hexadecimal integer is expected;
  99. the corresponding argument should be an integer pointer.
  100. .ti -0.2i
  101. .TP 4
  102. .B  s
  103. a character string is expected;
  104. the corresponding argument should be a character pointer
  105. pointing to an array of characters large enough to accept the
  106. string and a terminating `e0', which will be added.
  107. The input field is terminated by a space character
  108. or a newline.
  109. .TP 4
  110. .B  c
  111. a character is expected; the
  112. corresponding argument should be a character pointer.
  113. The normal skip over space characters is suppressed
  114. in this case;
  115. to read the next non-space character, try
  116. `%1s'.
  117. If a field width is given, the corresponding argument
  118. should refer to a character array, and the
  119. indicated number of characters is read.
  120. .TP 4
  121. .B efg
  122. a floating point number is expected;
  123. the next field is converted accordingly and stored through the
  124. corresponding argument, which should be a pointer to a
  125. .BR float .
  126. The input format for
  127. floating point numbers is
  128. an optionally signed
  129. string of digits
  130. possibly containing a decimal point, followed by an optional
  131. exponent field consisting of an E or e followed by an optionally signed integer.
  132. .TP 4
  133. .B  [
  134. indicates a string not to be delimited by space characters.
  135. The left bracket is followed by a set of characters and a right
  136. bracket; the characters between the brackets define a set
  137. of characters making up the string.
  138. If the first character
  139. is not circumflex (|^|), the input field
  140. is all characters until the first character not in the set between
  141. the brackets; if the first character
  142. after the left bracket is ^, the input field is all characters
  143. until the first character which is in the remaining set of characters
  144. between the brackets.
  145. The corresponding argument must point to a character array.
  146. .PP
  147. The conversion characters
  148. .BR d ,
  149. .B o
  150. and
  151. .B x
  152. may be capitalized or preceded by
  153. .B l
  154. to indicate that a pointer to
  155. .B long
  156. rather than to
  157. .B int
  158. is in the argument list.
  159. Similarly, the conversion characters
  160. .BR e ,
  161. .B f
  162. or
  163. .B g
  164. may be capitalized or
  165. preceded by
  166. .B l
  167. to indicate a pointer to 
  168. .B double
  169. rather than to 
  170. .BR float .
  171. The conversion characters
  172. .BR d ,
  173. .B o
  174. and
  175. .B x
  176. may be preceded by
  177. .B h
  178. to indicate a pointer to
  179. .B short
  180. rather than to
  181. .BR int .
  182. .PP
  183. The
  184. .B scanf
  185. functions return the number of successfully matched and assigned input
  186. items.
  187. This can be used to decide how many input items were found.
  188. The constant
  189. .SM
  190. .B EOF
  191. is returned upon end of input; note that this is different
  192. from 0, which means that no conversion was done;
  193. if conversion was intended, it was frustrated by an
  194. inappropriate character in the input.
  195. .PP
  196. For example, the call
  197. .IP "&" 10
  198. int i; float x; char name[50];
  199. .br
  200. scanf("%d%f%s", &i, &x, name);
  201. .PP
  202. with the input line
  203. .IP
  204. 25   54.32E(mi1  thompson
  205. .PP
  206. will assign to
  207. .B i
  208. the value
  209. 25,
  210. .B x
  211. the value 5.432, and
  212. .B name
  213. will contain `fBthompsone0fP' .
  214. Or,
  215. .IP
  216. int i; float x; char name[50];
  217. .br
  218. scanf("%2d%f%*d%[1234567890]", &i, &x, name);
  219. .PP
  220. with input
  221. .IP
  222. 56789 0123 56a72
  223. .PP
  224. will assign 56 to
  225. .BR i ,
  226. 789.0 to
  227. .BR x ,
  228. skip `0123',
  229. and place the string `56e0' in
  230. .BR name .
  231. The next call to
  232. .B getchar
  233. will return `a'.
  234. .SH "SEE ALSO"
  235. .BR atof (3),
  236. .BR getc (3),
  237. .BR printf (3),
  238. .BR stdarg (3).
  239. .SH DIAGNOSTICS
  240. The 
  241. .B scanf
  242. functions return
  243. .SM
  244. .B EOF
  245. on end of input,
  246. and a short count for missing or illegal data items.
  247. .SH BUGS
  248. The success of literal matches and suppressed
  249. assignments is not directly
  250. determinable.