getc(S) 6 January 1993 getc(S) Name getc, getchar, fgetc, getw - get character or word from a stream Syntax cc . . . -lc #include <stdio.h> int getc (stream) FILE *stream; int getchar () int fgetc (stream) FILE *stream; int getw (stream) FILE *stream; Description The getc function returns the next character (that is, the next byte) from the named input stream, as an integer. It also moves the file pointer, if defined, ahead one character in stream. getchar is defined as getc(stdin). getc and getchar are macros. The fgetc function behaves like getc, but is a function rather than a macro. fgetc runs more slowly than getc, but it takes less space per invocation and its name can be passed as an argument to a function. The getw function returns the next word (that is, the next integer) from the named input stream. getw increments the associated file pointer, if defined, to point to the next word. The size of a word is the size of an integer and varies from machine to machine. getw assumes no special alignment in the file. Diagnostics These functions return the constant EOF at end-of-file or upon an error. Because EOF is a valid integer, ferror(S) should be used to detect getw errors. Warning If the integer value returned by getc, getchar, or fgetc is stored into a character variable and then compared against the integer constant EOF, the comparison may never succeed, because the sign-extension of a charac- ter on widening to an integer is machine-dependent. Notes Because it is implemented as a macro, getc evaluates a stream argument more than once. In particular, getc(*f++) does not work well. fgetc should be used instead. Because of possible differences in word length and byte ordering, files written using putw are machine-dependent, and may not be read using getw on a different processor. Example The getchar function is typically used in a conditional loop to read a string of characters from the standard input. For example, the following function reads cnt number of characters from the keyboard: readn (p, cnt) char p[ ]; int cnt; { int i,c; i = 0; while ( i<cnt ) if (( p[i++] = getchar()) == EOF ) { p[i] = 0; return(EOF); } return(0); } Note that if getchar is reading from the keyboard, it waits for charac- ters to be entered before returning. See also fclose(S), ferror(S), fopen(S), fread(S), gets(S), putc(S), scanf(S), stdio(S) Standards conformance fgetc, getc and getchar are conformant with: AT&T SVID Issue 2; X/Open Portability Guide, Issue 3, 1989; ANSI X3.159-1989 Programming Language -- C; Intel386 Binary Compatibility Specification, Edition 2 (iBCSe2); IEEE POSIX Std 1003.1-1990 System Application Program Interface (API) [C Language] (ISO/IEC 9945-1); and NIST FIPS 151-1. getw is conformant with: AT&T SVID Issue 2; Intel386 Binary Compatibility Specification, Edition 2 (iBCSe2); and X/Open Portability Guide, Issue 3, 1989.