Name

fgetc, getc, getc_unlocked, getchar, getchar_unlocked, getw
- input of characters and strings

Library

libc.lib

Synopsis

  #include <stdio.h>
  int fgetc (FILE *stream);
  int getc (FILE *stream);
  int getc_unlocked (FILE *stream);
  int getchar ();
  int getchar_unlocked (void);
  int getw (FILE *stream);

Return values

If successful, these routines return the next requested object from the stream. Character values are returned as an unsigned char converted to an int. If the stream is at end-of-file or a read error occurs, the routines return EOF. The routines and ferror 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

Detailed 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.

The getc function acts essentially identically to fgetc, but is a macro that expands in-line.

The getchar function is equivalent to getc (stdin.);

The getw function obtains the next int (if present) from the stream pointed at by stream.

The getc_unlocked and getchar_unlocked functions are equivalent to getc and getchar respectively, except that the caller is responsible for locking the stream with flockfile before calling them. These functions may be used to avoid the overhead of locking the stream for each character, and to avoid input being dispersed among multiple threads reading from the same stream.


Examples

/****************** this program shows reading from file using getc **************/
/****************** consider input.txt has the following content: ****************/
/****************** hi ***********************************************************/
#include <stdio.h>
int main(void)
{
        int retval;
        FILE* fp = fopen("c:\\input.txt", "w");
        fprintf(fp, "%s", "abcdefghijklmn");
        fprintf(fp, "%c", ’\n’);
        fprintf(fp, "%s", "fdsfdsafsdabcdefghijklmn");
        fclose(fp);
        fp = fopen("C:\\input.txt","r");
        if(fp == NULL)
        {
        printf("fopen failed\n");
        return -1;
        }
        while((int)(retval = getc(fp) )!= EOF)
        {
        printf("%c", retval);
        }
        fclose(fp);
        return 0;
}

         

Output

hi

         

See also

ferror, flockfile, fopen, fread, getwc, putc, ungetc

Limitation

Since EOF is a valid integer value, feof and ferror must be used to check for failure after calling getw. The size and byte order of an int varies from one machine to another, and getw is not recommended for portable applications.


Feedback

For additional information or queries on this page send feedback

© 2005-2007 Nokia

Top