fgets()

Read a string of characters from a stream

Synopsis:

#include <stdio.h>

char* fgets( char* buf, 
             size_t n, 
             FILE* fp );

Arguments:

buf
A pointer to a buffer in which fgets() can store the characters that it reads.
n
The maximum number of characters to read.
fp
The stream from which to read the characters.

Library:

libc

Use the -l c option to qcc to link against this library. This library is usually included automatically.

Description:

The fgets() function reads a string of characters from the stream specified by fp, and stores them in the array specified by buf.

It stops reading characters when:

  • the end-of-file is reached

    Or:

  • a newline ('\n') character is read

    Or:

  • n-1 characters have been read.

The newline character isn't discarded. A null character is placed immediately after the last character read into the array.

Don't assume that there's a newline character in every string that you read with fgets(). A newline character isn't present if there are more than n-1 characters before the newline.

Also, a newline character might not appear as the last character in a file when the end-of-file is reached.

Returns:

The same pointer as buf, or NULL if the stream is at the end-of-file or an error occurs ( errno is set).

Use feof() or ferror() to distinguish an end-of-file condition from an error.

Examples:

#include <stdio.h>
#include <stdlib.h>

int main( void )
{
    FILE *fp;
    char buffer[80];

    fp = fopen( "file", "r" );
    if( fp != NULL ) {
        while( fgets( buffer, 80, fp ) != NULL ) {
            fputs( buffer, stdout );
        }
        fclose( fp );
        
        return EXIT_SUCCESS;
    }
    
    return EXIT_FAILURE;
}

Classification:

ANSI, POSIX 1003.1

Safety:  
Cancellation point Yes
Interrupt handler No
Signal handler No
Thread Yes

Last modified: 2013-12-23

comments powered by Disqus