You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

105 line
4.2KB

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
  2. <html>
  3. <!-- Created by GNU Texinfo 6.5, http://www.gnu.org/software/texinfo/ -->
  4. <head>
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  6. <title>ungetc (The Red Hat newlib C Library)</title>
  7. <meta name="description" content="ungetc (The Red Hat newlib C Library)">
  8. <meta name="keywords" content="ungetc (The Red Hat newlib C Library)">
  9. <meta name="resource-type" content="document">
  10. <meta name="distribution" content="global">
  11. <meta name="Generator" content="makeinfo">
  12. <link href="index.html#Top" rel="start" title="Top">
  13. <link href="Document-Index.html#Document-Index" rel="index" title="Document Index">
  14. <link href="Document-Index.html#SEC_Contents" rel="contents" title="Table of Contents">
  15. <link href="Stdio.html#Stdio" rel="up" title="Stdio">
  16. <link href="ungetwc.html#ungetwc" rel="next" title="ungetwc">
  17. <link href="tmpnam.html#tmpnam" rel="prev" title="tmpnam">
  18. <style type="text/css">
  19. <!--
  20. a.summary-letter {text-decoration: none}
  21. blockquote.indentedblock {margin-right: 0em}
  22. blockquote.smallindentedblock {margin-right: 0em; font-size: smaller}
  23. blockquote.smallquotation {font-size: smaller}
  24. div.display {margin-left: 3.2em}
  25. div.example {margin-left: 3.2em}
  26. div.lisp {margin-left: 3.2em}
  27. div.smalldisplay {margin-left: 3.2em}
  28. div.smallexample {margin-left: 3.2em}
  29. div.smalllisp {margin-left: 3.2em}
  30. kbd {font-style: oblique}
  31. pre.display {font-family: inherit}
  32. pre.format {font-family: inherit}
  33. pre.menu-comment {font-family: serif}
  34. pre.menu-preformatted {font-family: serif}
  35. pre.smalldisplay {font-family: inherit; font-size: smaller}
  36. pre.smallexample {font-size: smaller}
  37. pre.smallformat {font-family: inherit; font-size: smaller}
  38. pre.smalllisp {font-size: smaller}
  39. span.nolinebreak {white-space: nowrap}
  40. span.roman {font-family: initial; font-weight: normal}
  41. span.sansserif {font-family: sans-serif; font-weight: normal}
  42. ul.no-bullet {list-style: none}
  43. -->
  44. </style>
  45. </head>
  46. <body lang="en">
  47. <a name="ungetc"></a>
  48. <div class="header">
  49. <p>
  50. Next: <a href="ungetwc.html#ungetwc" accesskey="n" rel="next">ungetwc</a>, Previous: <a href="tmpnam.html#tmpnam" accesskey="p" rel="prev">tmpnam</a>, Up: <a href="Stdio.html#Stdio" accesskey="u" rel="up">Stdio</a> &nbsp; [<a href="Document-Index.html#SEC_Contents" title="Table of contents" rel="contents">Contents</a>][<a href="Document-Index.html#Document-Index" title="Index" rel="index">Index</a>]</p>
  51. </div>
  52. <hr>
  53. <a name="ungetc_002d_002d_002dpush-data-back-into-a-stream"></a>
  54. <h3 class="section">4.68 <code>ungetc</code>&mdash;push data back into a stream</h3>
  55. <a name="index-ungetc"></a>
  56. <a name="index-_005fungetc_005fr"></a>
  57. <p><strong>Synopsis</strong>
  58. </p><div class="example">
  59. <pre class="example">#include &lt;stdio.h&gt;
  60. int ungetc(int <var>c</var>, FILE *<var>stream</var>);
  61. int _ungetc_r(struct _reent *<var>reent</var>, int <var>c</var>, FILE *<var>stream</var>);
  62. </pre></div>
  63. <p><strong>Description</strong><br>
  64. <code>ungetc</code> is used to return bytes back to <var>stream</var> to be read again.
  65. If <var>c</var> is EOF, the stream is unchanged. Otherwise, the unsigned
  66. char <var>c</var> is put back on the stream, and subsequent reads will see
  67. the bytes pushed back in reverse order. Pushed byes are lost if the
  68. stream is repositioned, such as by <code>fseek</code>, <code>fsetpos</code>, or
  69. <code>rewind</code>.
  70. </p>
  71. <p>The underlying file is not changed, but it is possible to push back
  72. something different than what was originally read. Ungetting a
  73. character will clear the end-of-stream marker, and decrement the file
  74. position indicator. Pushing back beyond the beginning of a file gives
  75. unspecified behavior.
  76. </p>
  77. <p>The alternate function <code>_ungetc_r</code> is a reentrant version. The
  78. extra argument <var>reent</var> is a pointer to a reentrancy structure.
  79. </p>
  80. <br>
  81. <p><strong>Returns</strong><br>
  82. The character pushed back, or <code>EOF</code> on error.
  83. </p>
  84. <br>
  85. <p><strong>Portability</strong><br>
  86. ANSI C requires <code>ungetc</code>, but only requires a pushback buffer of one
  87. byte; although this implementation can handle multiple bytes, not all
  88. can. Pushing back a signed char is a common application bug.
  89. </p>
  90. <p>Supporting OS subroutines required: <code>sbrk</code>.
  91. </p>
  92. <br>
  93. </body>
  94. </html>