---
name: "fgetws"
section: "3"
platform: "macos"
package: "Libc"
version: "1752.120.2"
release: "macOS 26.5"
platforms: ["linux", "freebsd", "macos"]
url: "https://new.carta.tech/fgetws"
---

# fgetws(3)

get a line of wide characters from a stream

## NAME

**fgetws**, **fgetws\_l** – get a line of wide characters from a stream

## LIBRARY

Standard C Library (libc, -lc)

## SYNOPSIS

**#include \<stdio.h\>**

**#include \<wchar.h\>**

*wchar\_t \**\

**fgetws**(*wchar\_t \*restrict ws*, *int n*, *FILE \*restrict stream*);

**#include \<stdio.h\>**

**#include \<wchar.h\>**

**#include \<xlocale.h\>**

*wchar\_t \**\

**fgetws\_l**(*wchar\_t \*restrict ws*, *int n*, *FILE \*restrict stream*, *locale\_t loc*);

## DESCRIPTION

The **fgetws**() function reads at most one less than the number of characters specified by *n* from the given *stream* 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.

While the **fgetws**() function uses the current locale, the **fgetws\_l**() function may be passed a locale directly. See [xlocale(3)](/xlocale/3.md) for more information.

## 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; callers must use [feof(3)](/feof/3.md) and [ferror(3)](/ferror/3.md) to determine which occurred.

## ERRORS

The **fgetws**() function will fail if:

- \[EBADF\]

  The given *stream* 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)](/fflush/3.md), [fstat(2)](/fstat/2.md), [read(2)](/read/2.md), or [malloc(3)](/malloc/3.md).

## SEE ALSO

[feof(3)](/feof/3.md), [ferror(3)](/ferror/3.md), [fgets(3)](/fgets/3.md), [xlocale(3)](/xlocale/3.md)

## STANDARDS

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