1*2fe8fb19SBen Gras.\" $NetBSD: getc.3,v 1.12 2003/08/07 16:43:26 agc Exp $ 2*2fe8fb19SBen Gras.\" 3*2fe8fb19SBen Gras.\" Copyright (c) 1990, 1991, 1993 4*2fe8fb19SBen Gras.\" The Regents of the University of California. All rights reserved. 5*2fe8fb19SBen Gras.\" 6*2fe8fb19SBen Gras.\" This code is derived from software contributed to Berkeley by 7*2fe8fb19SBen Gras.\" Chris Torek and the American National Standards Committee X3, 8*2fe8fb19SBen Gras.\" on Information Processing Systems. 9*2fe8fb19SBen Gras.\" 10*2fe8fb19SBen Gras.\" Redistribution and use in source and binary forms, with or without 11*2fe8fb19SBen Gras.\" modification, are permitted provided that the following conditions 12*2fe8fb19SBen Gras.\" are met: 13*2fe8fb19SBen Gras.\" 1. Redistributions of source code must retain the above copyright 14*2fe8fb19SBen Gras.\" notice, this list of conditions and the following disclaimer. 15*2fe8fb19SBen Gras.\" 2. Redistributions in binary form must reproduce the above copyright 16*2fe8fb19SBen Gras.\" notice, this list of conditions and the following disclaimer in the 17*2fe8fb19SBen Gras.\" documentation and/or other materials provided with the distribution. 18*2fe8fb19SBen Gras.\" 3. Neither the name of the University nor the names of its contributors 19*2fe8fb19SBen Gras.\" may be used to endorse or promote products derived from this software 20*2fe8fb19SBen Gras.\" without specific prior written permission. 21*2fe8fb19SBen Gras.\" 22*2fe8fb19SBen Gras.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 23*2fe8fb19SBen Gras.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24*2fe8fb19SBen Gras.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25*2fe8fb19SBen Gras.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 26*2fe8fb19SBen Gras.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27*2fe8fb19SBen Gras.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28*2fe8fb19SBen Gras.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29*2fe8fb19SBen Gras.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30*2fe8fb19SBen Gras.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31*2fe8fb19SBen Gras.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32*2fe8fb19SBen Gras.\" SUCH DAMAGE. 33*2fe8fb19SBen Gras.\" 34*2fe8fb19SBen Gras.\" @(#)getc.3 8.1 (Berkeley) 6/4/93 35*2fe8fb19SBen Gras.\" 36*2fe8fb19SBen Gras.Dd April 25, 2001 37*2fe8fb19SBen Gras.Dt GETC 3 38*2fe8fb19SBen Gras.Os 39*2fe8fb19SBen Gras.Sh NAME 40*2fe8fb19SBen Gras.Nm fgetc , 41*2fe8fb19SBen Gras.Nm getc , 42*2fe8fb19SBen Gras.Nm getchar , 43*2fe8fb19SBen Gras.Nm getc_unlocked , 44*2fe8fb19SBen Gras.Nm getchar_unlocked , 45*2fe8fb19SBen Gras.Nm getw 46*2fe8fb19SBen Gras.Nd get next character or word from input stream 47*2fe8fb19SBen Gras.Sh LIBRARY 48*2fe8fb19SBen Gras.Lb libc 49*2fe8fb19SBen Gras.Sh SYNOPSIS 50*2fe8fb19SBen Gras.In stdio.h 51*2fe8fb19SBen Gras.Ft int 52*2fe8fb19SBen Gras.Fn fgetc "FILE *stream" 53*2fe8fb19SBen Gras.Ft int 54*2fe8fb19SBen Gras.Fn getc "FILE *stream" 55*2fe8fb19SBen Gras.Ft int 56*2fe8fb19SBen Gras.Fn getchar 57*2fe8fb19SBen Gras.Ft int 58*2fe8fb19SBen Gras.Fn getc_unlocked "FILE *stream" 59*2fe8fb19SBen Gras.Ft int 60*2fe8fb19SBen Gras.Fn getchar_unlocked 61*2fe8fb19SBen Gras.Ft int 62*2fe8fb19SBen Gras.Fn getw "FILE *stream" 63*2fe8fb19SBen Gras.Sh DESCRIPTION 64*2fe8fb19SBen GrasThe 65*2fe8fb19SBen Gras.Fn fgetc 66*2fe8fb19SBen Grasfunction 67*2fe8fb19SBen Grasobtains the next input character (if present) from the stream pointed at by 68*2fe8fb19SBen Gras.Fa stream , 69*2fe8fb19SBen Grasor the next character pushed back on the stream via 70*2fe8fb19SBen Gras.Xr ungetc 3 . 71*2fe8fb19SBen Gras.Pp 72*2fe8fb19SBen GrasThe 73*2fe8fb19SBen Gras.Fn getc 74*2fe8fb19SBen Grasfunction 75*2fe8fb19SBen Grasacts essentially identically to 76*2fe8fb19SBen Gras.Fn fgetc , 77*2fe8fb19SBen Grasbut is a macro that expands in-line. 78*2fe8fb19SBen Gras.Pp 79*2fe8fb19SBen GrasThe 80*2fe8fb19SBen Gras.Fn getchar 81*2fe8fb19SBen Grasfunction 82*2fe8fb19SBen Grasis equivalent to: 83*2fe8fb19SBen Grasgetc with the argument stdin. 84*2fe8fb19SBen Gras.Pp 85*2fe8fb19SBen GrasThe 86*2fe8fb19SBen Gras.Fn getc_unlocked 87*2fe8fb19SBen Grasand 88*2fe8fb19SBen Gras.Fn getchar_unlocked 89*2fe8fb19SBen Grasfunctions provide functionality identical to that of 90*2fe8fb19SBen Gras.Fn getc 91*2fe8fb19SBen Grasand 92*2fe8fb19SBen Gras.Fn getchar , 93*2fe8fb19SBen Grasrespectively, but do not perform implicit locking of the streams they 94*2fe8fb19SBen Grasoperate on. 95*2fe8fb19SBen GrasIn multi-threaded programs they may be used 96*2fe8fb19SBen Gras.Em only 97*2fe8fb19SBen Graswithin a scope in which the stream 98*2fe8fb19SBen Grashas been successfully locked by the calling thread using either 99*2fe8fb19SBen Gras.Xr flockfile 3 100*2fe8fb19SBen Grasor 101*2fe8fb19SBen Gras.Xr ftrylockfile 3 , 102*2fe8fb19SBen Grasand may later be released using 103*2fe8fb19SBen Gras.Xr funlockfile 3 . 104*2fe8fb19SBen Gras.Pp 105*2fe8fb19SBen GrasThe 106*2fe8fb19SBen Gras.Fn getw 107*2fe8fb19SBen Grasfunction 108*2fe8fb19SBen Grasobtains the next 109*2fe8fb19SBen Gras.Em int 110*2fe8fb19SBen Gras(if present) 111*2fe8fb19SBen Grasfrom the stream pointed at by 112*2fe8fb19SBen Gras.Fa stream . 113*2fe8fb19SBen Gras.Sh RETURN VALUES 114*2fe8fb19SBen GrasIf successful, these routines return the next requested object 115*2fe8fb19SBen Grasfrom the 116*2fe8fb19SBen Gras.Fa stream . 117*2fe8fb19SBen GrasIf the stream is at end-of-file or a read error occurs, 118*2fe8fb19SBen Grasthe routines return 119*2fe8fb19SBen Gras.Dv EOF . 120*2fe8fb19SBen GrasThe routines 121*2fe8fb19SBen Gras.Xr feof 3 122*2fe8fb19SBen Grasand 123*2fe8fb19SBen Gras.Xr ferror 3 124*2fe8fb19SBen Grasmust be used to distinguish between end-of-file and error. 125*2fe8fb19SBen GrasIf an error occurs, the global variable 126*2fe8fb19SBen Gras.Va errno 127*2fe8fb19SBen Grasis set to indicate the error. 128*2fe8fb19SBen GrasThe end-of-file condition is remembered, even on a terminal, and all 129*2fe8fb19SBen Grassubsequent attempts to read will return 130*2fe8fb19SBen Gras.Dv EOF 131*2fe8fb19SBen Grasuntil the condition is cleared with 132*2fe8fb19SBen Gras.Xr clearerr 3 . 133*2fe8fb19SBen Gras.Sh SEE ALSO 134*2fe8fb19SBen Gras.Xr ferror 3 , 135*2fe8fb19SBen Gras.Xr flockfile 3 , 136*2fe8fb19SBen Gras.Xr fopen 3 , 137*2fe8fb19SBen Gras.Xr fread 3 , 138*2fe8fb19SBen Gras.Xr ftrylockfile 3 , 139*2fe8fb19SBen Gras.Xr funlockfile 3 , 140*2fe8fb19SBen Gras.Xr putc 3 , 141*2fe8fb19SBen Gras.Xr ungetc 3 142*2fe8fb19SBen Gras.Sh STANDARDS 143*2fe8fb19SBen GrasThe 144*2fe8fb19SBen Gras.Fn fgetc , 145*2fe8fb19SBen Gras.Fn getc 146*2fe8fb19SBen Grasand 147*2fe8fb19SBen Gras.Fn getchar 148*2fe8fb19SBen Grasfunctions 149*2fe8fb19SBen Grasconform to 150*2fe8fb19SBen Gras.St -ansiC . 151*2fe8fb19SBen GrasThe 152*2fe8fb19SBen Gras.Fn getc_unlocked 153*2fe8fb19SBen Grasand 154*2fe8fb19SBen Gras.Fn getchar_unlocked 155*2fe8fb19SBen Grasfunctions conform to 156*2fe8fb19SBen Gras.St -p1003.1-96 . 157*2fe8fb19SBen Gras.Sh BUGS 158*2fe8fb19SBen GrasSince 159*2fe8fb19SBen Gras.Dv EOF 160*2fe8fb19SBen Grasis a valid integer value, 161*2fe8fb19SBen Gras.Xr feof 3 162*2fe8fb19SBen Grasand 163*2fe8fb19SBen Gras.Xr ferror 3 164*2fe8fb19SBen Grasmust be used to check for failure after calling 165*2fe8fb19SBen Gras.Fn getw . 166*2fe8fb19SBen GrasThe size and byte order of an 167*2fe8fb19SBen Gras.Em int 168*2fe8fb19SBen Grasvaries from one machine to another, and 169*2fe8fb19SBen Gras.Fn getw 170*2fe8fb19SBen Grasis not recommended for portable applications. 171