curs\_in\_wchstr(3X) Library calls curs\_in\_wchstr(3X)

# [NAME](#NAME)

**in\_wchstr**, **in\_wchnstr**, **win\_wchstr**, **win\_wchnstr**, **mvin\_wchstr**, **mvin\_wchnstr**, **mvwin\_wchstr**, **mvwin\_wchnstr** - get a *curses* complex character string from a window

# [SYNOPSIS](#SYNOPSIS)

```
#include <curses.h>
```

```
int in_wchstr(cchar_t * wchstr);
int win_wchstr(WINDOW * win, cchar_t * wchstr);
int mvin_wchstr(int y, int x, cchar_t * wchstr);
int mvwin_wchstr(WINDOW * win, int y, int x, cchar_t * wchstr);
```

```
int in_wchnstr(cchar_t * wchstr, int n);
int win_wchnstr(WINDOW * win, cchar_t * wchstr, int n);
int mvin_wchnstr(int y, int x, cchar_t * wchstr, int n);
int mvwin_wchnstr(WINDOW * win, int y, int x, cchar_t * wchstr, int n)
```

# [DESCRIPTION](#DESCRIPTION)

**win\_wchstr** extracts a *curses* complex character string from a *curses* window *win*, starting at the cursor and stopping at the end of the line, and stores it in *wchstr*, terminating it with a wide null *curses* character. **win\_wchnstr** does the same, but copies at most *n* *curses* complex characters from *win*. A negative *n* implies no limit; **win\_wchnstr** then works like **win\_wchstr**. [**ncurses**(3X)](/man/os/ncurses/ncurses.3X) describes the variants of these functions.

# [RETURN VALUE](#RETURN_VALUE)

These functions return **OK** on success and **ERR** on failure.

In *ncurses*, these functions fail if

- the *curses* screen has not been initialized,
- (for functions taking a *WINDOW* pointer argument) *win* is a null pointer, or
- *wchstr* is a null pointer.

Functions prefixed with “mv” first perform cursor movement and fail if the position (*y*, *x*) is outside the window boundaries.

# [NOTES](#NOTES)

All of these functions except **win\_wchnstr** may be implemented as macros.

Reading a line that overflows the array pointed to by *wchstr* and its variants causes undefined results. Instead, use the *n*-infixed functions with a positive *n* argument no larger than the size of the buffer backing *wchstr*.

# [PORTABILITY](#PORTABILITY)

X/Open Curses Issue 4 describes these functions. It specifies no error conditions for them.

# [HISTORY](#HISTORY)

X/Open Curses Issue 4 (1995) initially specified these functions. The System V Interface Definition Version 4 of the same year specified a function named *winwchstr* (and the usual variants). This was a later addition to SVr4.*x*, not appearing in the first SVr4 (1989). It differed from X/Open's later *win\_wchstr* in that it took an argument of type pointer-to-*chtype* instead of pointer-to-*cchar\_t*.

# [SEE ALSO](#SEE_ALSO)

[**curs\_inchstr**(3X)](/man/os/ncurses/curs_inchstr.3X) describes comparable functions of the *ncurses* library in its non-wide-character configuration.

[**curses**(3X)](/man/os/ncurses/curses.3X), [**curs\_inwstr**(3X)](/man/os/ncurses/curs_inwstr.3X), [**curs\_in\_wch**(3X)](/man/os/ncurses/curs_in_wch.3X)

2025-10-20 ncurses 6.6

---

Document: mvwin_wchnstr(3x) from ncurses 6.6.20261010-r0 (Chainguard OS)
Source: https://github.com/ThomasDickey/ncurses-snapshots
