Namespaces
Variants
Views
Actions

std::fgets

From cppreference.com
< cpp‎ | io‎ | c
 
 
Input/output library
I/O manipulators
C-style I/O
Buffers
(deprecated in C++98)
Streams
Abstractions
File I/O
String I/O
Array I/O
(deprecated in C++98)
(deprecated in C++98)
(deprecated in C++98)
Synchronized Output
Types
Error category interface
(C++11)
 
 
Defined in header <cstdio>
char* fgets( char* str, int count, std::FILE* stream );

Reads at most count - 1 characters from the given file stream and stores them in the character array pointed to by str. Parsing stops if a newline character is found, in which case str will contain that newline character, or if end-of-file occurs. If bytes are read and no errors occur, writes a null character at the position immediately after the last character written to str.

The behavior is undefined if count is less than 1. It is also not specified whether a null character is written if count==1.

Contents

[edit] Parameters

str - pointer to an element of a char array
count - maximum number of characters to write (typically the length of str)
stream - file stream to read the data from

[edit] Return value

str on success, null pointer on failure.

If the end-of-file condition is encountered, sets the eof indicator on stream (see std::feof()). This is only a failure if it causes no bytes to be read, in which case a null pointer is returned and the contents of the array pointed to by str are not altered (i.e. the first byte is not overwritten with a null character).

If the failure has been caused by some other error, sets the error indicator (see std::ferror()) on stream. The contents of the array pointed to by str are indeterminate (it may not even be null-terminated).

[edit] Example

#include <iostream>
#include <cstdio>
#include <cstdlib>
 
int main()
{
    std::FILE* tmpf = std::tmpfile();
    std::fputs("Alan Turing\n", tmpf);
    std::fputs("John von Neumann\n", tmpf);
    std::fputs("Alonzo Church\n", tmpf);
 
    std::rewind(tmpf);
    char buf[8];
    while (std::fgets(buf, sizeof buf, tmpf) != NULL) {
        std::cout << '"' << buf << '"' << '\n';
    }
}

Output:

"Alan Tu"
"ring
"
"John vo"
"n Neuma"
"nn
"
"Alonzo "
"Church
"

[edit] See also

reads formatted input from stdin, a file stream or a buffer
(function) [edit]
(deprecated in C++11)(removed in C++14)
reads a character string from stdin
(function) [edit]
writes a character string to a file stream
(function) [edit]
C documentation for fgets