Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
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	 char-
       acter 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  charac-
       ter).

	  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

http://cppreference.com		  2024.06.10			 std::fgets(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::fgets&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help