getc(3)
Canonical URL: /getc.3/
NAME
fgetc, getc,
getchar, getc_unlocked,
getchar_unlocked, getw
— get next character or word
from input stream
SYNOPSIS
#include
<stdio.h>
int
fgetc(FILE
*stream);
int
getc(FILE
*stream);
int
getchar(void);
int
getc_unlocked(FILE
*stream);
int
getchar_unlocked(void);
int
getw(FILE
*stream);
DESCRIPTION
The
fgetc()
function obtains the next input character (if present) from the stream
pointed at by stream, or the next character pushed
back on the stream via ungetc(3).
The
getc()
function acts essentially identically to fgetc(),
but is a macro that expands in-line.
The
getchar()
function is equivalent to getc() with the argument
stdin.
The
getc_unlocked()
and
getchar_unlocked()
functions perform the same action, but do not obtain the stream lock. They
require that the stream first be locked with
flockfile(3) for thread
safe operation.
The
getw()
function obtains the next int (if present) from the
stream pointed at by stream.
RETURN VALUES
If successful, these routines return the next requested object
from the stream. If the stream is at end-of-file or a
read error occurs, the routines return EOF. The
routines feof(3) and
ferror(3) must be used to
distinguish between end-of-file and error. If an error occurs, the global
variable errno is set to indicate the error. The
end-of-file condition is remembered, even on a terminal, and all subsequent
attempts to read will return EOF until the condition
is cleared with clearerr(3).
SEE ALSO
ferror(3), flockfile(3), fopen(3), fread(3), getwc(3), putc(3), ungetc(3)
STANDARDS
The fgetc(),
getc(), and getchar()
functions conform to ANSI X3.159-1989
(“ANSI C89”). The
getc_unlocked() and
getchar_unlocked() functions conform to
IEEE Std 1003.1-2024 (“POSIX.1”).
HISTORY
The getc() and
getw() functions first appeared in
Version 1 AT&T UNIX;
getchar() in Version 2
AT&T UNIX; and fgetc() in
Version 7 AT&T UNIX. The
getc_unlocked() and
getchar_unlocked() functions have been available
since OpenBSD 2.5.
BUGS
Since EOF is a valid integer value,
feof(3) and
ferror(3) must be used to
check for failure after calling getw().
Since the size and byte order of an int may
vary from one machine to another, getw() is not
recommended for portable applications.
Need conceptual guidance? Continue in the OpenBSD Handbook.