---
name: "curs_addchstr"
section: "3x"
platform: "macos"
package: "ncurses"
version: "79"
release: "macOS 26.5"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/curs_addchstr/3x"
---

# curs\_addchstr(3x)

add a string of characters (and attributes) to a curses window

## NAME

**addchstr**, **addchnstr**, **waddchstr**, **waddchnstr**, **mvaddchstr**, **mvaddchnstr**, **mvwaddchstr**, **mvwaddchnstr** - add a string of characters (and attributes) to a **curses** window

## SYNOPSIS

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

**int addchstr(const chtype \*chstr);**\
 **int addchnstr(const chtype \*chstr, int n);**\
 **int waddchstr(WINDOW \*win, const chtype \*chstr);**\
 **int waddchnstr(WINDOW \*win, const chtype \*chstr, int n);**\
 **int mvaddchstr(int y, int x, const chtype \*chstr);**\
 **int mvaddchnstr(int y, int x, const chtype \*chstr, int n);**\
 **int mvwaddchstr(WINDOW \*win, int y, int x, const chtype \*chstr);**\
 **int mvwaddchnstr(WINDOW \*win, int y, int x, const chtype \*chstr, int n);**

## DESCRIPTION

These functions copy the (null-terminated) *chstr* array into the window image structure starting at the current cursor position. The four functions with *n* as the last argument copy at most *n* elements, but no more than will fit on the line. If **n**=**-1** then the whole array is copied, to the maximum number of characters that will fit on the line.

The window cursor is *not* advanced. These functions work faster than **waddnstr**. On the other hand:

- •

  they do not perform checking (such as for the newline, backspace, or carriage return characters),

- •

  they do not advance the current cursor position,

- •

  they do not expand other control characters to ^-escapes, and

- •

  they truncate the string if it crosses the right margin, rather than wrapping it around to the new line.

## RETURN VALUE

All functions return the integer **ERR** upon failure and **OK** on success.

X/Open does not define any error conditions. This implementation returns an error if the window pointer is null.

Functions with a "mv" prefix first perform a cursor movement using **wmove**, and return an error if the position is outside the window, or if the window pointer is null.

## NOTES

All functions except **waddchnstr** may be macros.

## PORTABILITY

These entry points are described in the XSI Curses standard, Issue 4.

## SEE ALSO

**curs\_addstr**(3X), **curses**(3X).

Comparable functions in the wide-character (ncursesw) library are described in **curs\_add\_wchstr**(3X).
