FGETWS(3) | Library Functions Manual | FGETWS(3)

# NAME

`fgetws` — get a line of wide characters from a stream

# SYNOPSIS

`#include <stdio.h>`
`#include <wchar.h>`

wchar_t *
`fgetws`(wchar_t * restrict ws, int n, FILE * restrict fp);

# DESCRIPTION

The `fgetws`() function reads at most one less than the number of characters specified by n from the given fp and stores them in the wide-character string ws. Reading stops when a newline character is found, at end-of-file, or error. The newline, if any, is retained. If any characters are read and there is no error, a ‘`\0`’ character is appended to end the string.

# RETURN VALUES

Upon successful completion, `fgetws`() returns ws. If end-of-file occurs before any characters are read, `fgetws`() returns `NULL` and the buffer contents remain unchanged. If an error occurs, `fgetws`() returns `NULL` and the buffer contents are indeterminate. The `fgetws`() function does not distinguish between end-of-file and error, and callers must use feof(3) and ferror(3) to determine which occurred.

# ERRORS

[`EBADF`]
  The given fp argument is not a readable stream.
[`EILSEQ`]
  The data obtained from the input stream does not form a valid multibyte character.

The function `fgetws`() may also fail and set errno for any of the errors specified for the routines fflush(3), fstat(2), read(2), or malloc(3).

# SEE ALSO

feof(3), ferror(3), fgets(3)

# STANDARDS

The `fgetws`() function conforms to IEEE Std 1003.1-2001 (“POSIX.1”).

June 13, 2025 | Debian