📄 scanf.html
字号:
<tt>"[^]"</tt> , the right square bracket is included in the scanlist and the next right square bracket is the matching rightsquare bracket that ends the conversion specification; otherwise, the first right square bracket is the one that ends theconversion specification. If a <tt>'-'</tt> is in the scanlist and is not the first character, nor the second where the firstcharacter is a <tt>'^'</tt> , nor the last character, the behavior is implementation-defined.</p></dd><dt><tt>c</tt></dt><dd>Matches a sequence of bytes of the number specified by the field width (1 if no field width is present in the conversionspecification). The application shall ensure that the corresponding argument is a pointer to the initial byte of an array of<b>char</b>, <b>signed char</b>, or <b>unsigned char</b> large enough to accept the sequence. No null byte is added. The normalskip over white-space characters shall be suppressed in this case. <p>If an <tt>l</tt> (ell) qualifier is present, the input shall be a sequence of characters that begins in the initial shift state.Each character in the sequence is converted to a wide character as if by a call to the <a href="../functions/mbrtowc.html"><i>mbrtowc</i>()</a> function, with the conversion state described by an <b>mbstate_t</b> objectinitialized to zero before the first character is converted. The application shall ensure that the corresponding argument is apointer to an array of <b>wchar_t</b> large enough to accept the resulting sequence of wide characters. No null wide character isadded.</p></dd><dt><tt>p</tt></dt><dd>Matches an implementation-defined set of sequences, which shall be the same as the set of sequences that is produced by the<tt>%p</tt> conversion specification of the corresponding <a href="../functions/fprintf.html"><i>fprintf</i>()</a> functions. Theapplication shall ensure that the corresponding argument is a pointer to a pointer to <b>void</b>. The interpretation of the inputitem is implementation-defined. If the input item is a value converted earlier during the same program execution, the pointer thatresults shall compare equal to that value; otherwise, the behavior of the <tt>%p</tt> conversion specification is undefined.</dd><dt><tt>n</tt></dt><dd>No input is consumed. The application shall ensure that the corresponding argument is a pointer to the integer into which shallbe written the number of bytes read from the input so far by this call to the <i>fscanf</i>() functions. Execution of a <tt>%n</tt>conversion specification shall not increment the assignment count returned at the completion of execution of the function. Noargument shall be converted, but one shall be consumed. If the conversion specification includes an assignment-suppressingcharacter or a field width, the behavior is undefined.</dd><dt><tt>C</tt></dt><dd><sup>[<a href="javascript:open_code('XSI')">XSI</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]" border="0">Equivalent to <tt>lc</tt> . <img src="../images/opt-end.gif" alt="[Option End]" border="0"></dd><dt><tt>S</tt></dt><dd><sup>[<a href="javascript:open_code('XSI')">XSI</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]" border="0">Equivalent to <tt>ls</tt> . <img src="../images/opt-end.gif" alt="[Option End]" border="0"></dd><dt><tt>%</tt></dt><dd>Matches a single <tt>'%'</tt> character; no conversion or assignment occurs. The complete conversion specification shall be<tt>%%</tt> .</dd></dl><p>If a conversion specification is invalid, the behavior is undefined.</p><p>The conversion specifiers <tt>A</tt> , <tt>E</tt> , <tt>F</tt> , <tt>G</tt> , and <tt>X</tt> are also valid and shall beequivalent to <tt>a</tt> , <tt>e</tt> , <tt>f</tt> , <tt>g</tt> , and <tt>x</tt> , respectively.</p><p>If end-of-file is encountered during input, conversion shall be terminated. If end-of-file occurs before any bytes matching thecurrent conversion specification (except for <tt>%n</tt> ) have been read (other than leading white-space characters, wherepermitted), execution of the current conversion specification shall terminate with an input failure. Otherwise, unless execution ofthe current conversion specification is terminated with a matching failure, execution of the following conversion specification (ifany) shall be terminated with an input failure.</p><p>Reaching the end of the string in <i>sscanf</i>() shall be equivalent to encountering end-of-file for <i>fscanf</i>().</p><p>If conversion terminates on a conflicting input, the offending input is left unread in the input. Any trailing white space(including <newline>s) shall be left unread unless matched by a conversion specification. The success of literal matches andsuppressed assignments is only directly determinable via the <tt>%n</tt> conversion specification.</p><p><sup>[<a href="javascript:open_code('CX')">CX</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]" border="0"> The<i>fscanf</i>() and <i>scanf</i>() functions may mark the <i>st_atime</i> field of the file associated with <i>stream</i> forupdate. The <i>st_atime</i> field shall be marked for update by the first successful execution of <a href="../functions/fgetc.html"><i>fgetc</i>()</a>, <a href="../functions/fgets.html"><i>fgets</i>()</a>, <a href="../functions/fread.html"><i>fread</i>()</a>, <a href="../functions/getc.html"><i>getc</i>()</a>, <a href="../functions/getchar.html"><i>getchar</i>()</a>, <a href="../functions/gets.html"><i>gets</i>()</a>, <i>fscanf</i>(), or<i>fscanf</i>() using <i>stream</i> that returns data not supplied by a prior call to <a href="../functions/ungetc.html"><i>ungetc</i>()</a>. <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p></blockquote><h4><a name="tag_03_190_04"></a>RETURN VALUE</h4><blockquote><p>Upon successful completion, these functions shall return the number of successfully matched and assigned input items; thisnumber can be zero in the event of an early matching failure. If the input ends before the first matching failure or conversion,EOF shall be returned. If a read error occurs, the error indicator for the stream is set, EOF shall be returned, <sup>[<a href="javascript:open_code('CX')">CX</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]" border="0"> and<i>errno</i> shall be set to indicate the error. <img src="../images/opt-end.gif" alt="[Option End]" border="0"></p></blockquote><h4><a name="tag_03_190_05"></a>ERRORS</h4><blockquote><p>For the conditions under which the <i>fscanf</i>() functions fail and may fail, refer to <a href="fgetc.html"><i>fgetc</i>()</a>or <a href="fgetwc.html"><i>fgetwc</i>()</a> .</p><p>In addition, <i>fscanf</i>() may fail if:</p><dl compact><dt>[EILSEQ]</dt><dd><sup>[<a href="javascript:open_code('XSI')">XSI</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]" border="0">Input byte sequence does not form a valid character. <img src="../images/opt-end.gif" alt="[Option End]" border="0"></dd><dt>[EINVAL]</dt><dd><sup>[<a href="javascript:open_code('XSI')">XSI</a>]</sup> <img src="../images/opt-start.gif" alt="[Option Start]" border="0">There are insufficient arguments. <img src="../images/opt-end.gif" alt="[Option End]" border="0"></dd></dl></blockquote><hr><div class="box"><em>The following sections are informative.</em></div><h4><a name="tag_03_190_06"></a>EXAMPLES</h4><blockquote><p>The call:</p><pre><tt>int i, n; float x; char name[50];n = scanf("%d%f%s", &i, &x, name);</tt></pre><p>with the input line:</p><pre><tt>25 54.32E-1 Hamster</tt></pre><p>assigns to <i>n</i> the value 3, to <i>i</i> the value 25, to <i>x</i> the value 5.432, and <i>name</i> contains the string<tt>"Hamster"</tt> .</p><p>The call:</p><pre><tt>int i; float x; char name[50];(void) scanf("%2d%f%*d %[0123456789]", &i, &x, name);</tt></pre><p>with input:</p><pre><tt>56789 0123 56a72</tt></pre><p>assigns 56 to <i>i</i>, 789.0 to <i>x</i>, skips 0123, and places the string <tt>"56\0"</tt> in <i>name</i>. The next call to <ahref="../functions/getchar.html"><i>getchar</i>()</a> shall return the character <tt>'a'</tt> .</p><h5><a name="tag_03_190_06_01"></a>Reading Data into an Array</h5><p>The following call uses <i>fscanf</i>() to read three floating-point numbers from standard input into the <i>input</i>array.</p><pre><tt>float input[3]; fscanf (stdin, "%f %f %f", input, input+1, input+2);</tt></pre></blockquote><h4><a name="tag_03_190_07"></a>APPLICATION USAGE</h4><blockquote><p>If the application calling <i>fscanf</i>() has any objects of type <b>wint_t</b> or <b>wchar_t</b>, it must also include the <ahref="../basedefs/wchar.h.html"><i><wchar.h></i></a> header to have these objects defined.</p></blockquote><h4><a name="tag_03_190_08"></a>RATIONALE</h4><blockquote><p>This function is aligned with the ISO/IEC 9899:1999 standard, and in doing so a few "obvious" things were not included.Specifically, the set of characters allowed in a scanset is limited to single-byte characters. In other similar places, multi-bytecharacters have been permitted, but for alignment with the ISO/IEC 9899:1999 standard, it has not been done here. Applicationsneeding this could use the corresponding wide-character functions to achieve the desired results.</p></blockquote><h4><a name="tag_03_190_09"></a>FUTURE DIRECTIONS</h4><blockquote><p>None.</p></blockquote><h4><a name="tag_03_190_10"></a>SEE ALSO</h4><blockquote><p><a href="getc.html"><i>getc</i>()</a> , <a href="printf.html"><i>printf</i>()</a> , <a href="setlocale.html"><i>setlocale</i>()</a> , <a href="strtod.html"><i>strtod</i>()</a> , <a href="strtol.html"><i>strtol</i>()</a> ,<a href="strtoul.html"><i>strtoul</i>()</a> , <a href="wcrtomb.html"><i>wcrtomb</i>()</a> , the Base Definitions volume ofIEEE Std 1003.1-2001, <a href="../basedefs/xbd_chap07.html">Chapter 7, Locale</a>, <a href="../basedefs/langinfo.h.html"><i><langinfo.h></i></a>, <a href="../basedefs/stdio.h.html"><i><stdio.h></i></a>, <ahref="../basedefs/wchar.h.html"><i><wchar.h></i></a></p></blockquote><h4><a name="tag_03_190_11"></a>CHANGE HISTORY</h4><blockquote><p>First released in Issue 1. Derived from Issue 1 of the SVID.</p></blockquote><h4><a name="tag_03_190_12"></a>Issue 5</h4><blockquote><p>Aligned with ISO/IEC 9899:1990/Amendment 1:1995 (E). Specifically, the <tt>l</tt> (ell) qualifier is now defined for the<tt>c</tt> , <tt>s</tt> , and <tt>[</tt> conversion specifiers.</p><p>The DESCRIPTION is updated to indicate that if infinity and NaN can be generated by the <a href="../functions/fprintf.html"><i>fprintf</i>()</a> family of functions, then they are recognized by the <i>fscanf</i>() family.</p></blockquote><h4><a name="tag_03_190_13"></a>Issue 6</h4><blockquote><p>The Open Group Corrigenda U021/7 and U028/10 are applied. These correct several occurrences of "characters" in the text whichhave been replaced with the term "bytes".</p><p>The DESCRIPTION is updated to avoid use of the term "must" for application requirements.</p><p>The following changes are made for alignment with the ISO/IEC 9899:1999 standard:</p><ul><li><p>The prototypes for <i>fscanf</i>(), <i>scanf</i>(), and <i>sscanf</i>() are updated.</p></li><li><p>The DESCRIPTION is updated.</p></li><li><p>The <tt>hh</tt> , <tt>ll</tt> , <tt>j</tt> , <tt>t</tt> , and <tt>z</tt> length modifiers are added.</p></li><li><p>The <tt>a</tt> , <tt>A</tt> , and <tt>F</tt> conversion characters are added.</p></li></ul><p>The DESCRIPTION is updated to use the terms "conversion specifier" and "conversion specification" consistently.</p></blockquote><div class="box"><em>End of informative text.</em></div><hr><hr size="2" noshade><center><font size="2"><!--footer start-->UNIX ® is a registered Trademark of The Open Group.<br>POSIX ® is a registered Trademark of The IEEE.<br>[ <a href="../mindex.html">Main Index</a> | <a href="../basedefs/contents.html">XBD</a> | <a href="../utilities/contents.html">XCU</a> | <a href="../functions/contents.html">XSH</a> | <a href="../xrat/contents.html">XRAT</a>]</font></center><!--footer end--><hr size="2" noshade></body></html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -