table of contents
        
      
      
    - Tumbleweed 2024.07.05-1.3
 - Leap-16.0
 - Leap-15.6
 
| std::fgets(3) | C++ Standard Libary | std::fgets(3) | 
NAME¶
std::fgets - std::fgets
Synopsis¶
 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.
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
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).
Notes¶
 POSIX additionally requires that fgets sets errno if it
    encounters a failure other
  
   than the end-of-file condition.
  
   Although the standard specification is unclear in the cases where count <=
    1, common
  
   implementations do
  
   * if count < 1, do nothing, report error,
  
   * if count == 1,
  
   * some implementations do nothing, report error,
  
   * others read nothing, store zero in str[0], report success.
Example¶
// Run this code
  
   #include <cstdio>
  
   #include <cstdlib>
  
   #include <iomanip>
  
   #include <iostream>
  
   #include <span>
  
   void dump(std::span<const char> buf, std::size_t offset)
  
   {
  
   std::cout << std::dec;
  
   for (char ch : buf)
  
   std::cout << (ch >= ' ' ? ch : '.'), offset--;
  
   std::cout << std::string(offset, ' ') << std::hex
  
   << std::setfill('0') << std::uppercase;
  
   for (unsigned ch : buf)
  
   std::cout << std::setw(2) << ch << ' ';
  
   std::cout << std::dec << '\n';
  
   }
  
   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);
  
   for (char buf[8]; std::fgets(buf, sizeof buf, tmpf) != nullptr;)
  
   dump(buf, 10);
  
   }
Output:¶
 Alan Tu. 41 6C 61 6E 20 54 75 00
  
   ring..u. 72 69 6E 67 0A 00 75 00
  
   John vo. 4A 6F 68 6E 20 76 6F 00
  
   n Neuma. 6E 20 4E 65 75 6D 61 00
  
   nn..uma. 6E 6E 0A 00 75 6D 61 00
  
   Alonzo . 41 6C 6F 6E 7A 6F 20 00
  
   Church.. 43 68 75 72 63 68 0A 00
See also¶
 scanf reads formatted input from stdin, a file stream or a buffer
  
   fscanf (function)
  
   sscanf
  
   gets reads a character string from stdin
  
   (deprecated in C++11) (function)
  
   (removed in C++14)
  
   fputs writes a character string to a file stream
  
   (function)
  
   C documentation for
  
   fgets
| 2024.06.10 | http://cppreference.com |