curs_printw(3x) — Linux manual page

NAME | SYNOPSIS | DESCRIPTION | RETURN VALUE | NOTES | PORTABILITY | HISTORY | SEE ALSO | COLOPHON

curs_printw(3X)               Library calls               curs_printw(3X)

NAME         top

       printw, wprintw, mvprintw, mvwprintw, vwprintw, vw_printw - write
       formatted output to a curses window

SYNOPSIS         top

       #include <curses.h>

       int printw(const char *fmt, ...);
       int wprintw(WINDOW *win, const char *fmt, ...);
       int mvprintw(int y, int x, const char *fmt, ...);
       int mvwprintw(WINDOW *win, int y, int x, const char *fmt, ...);

       int vw_printw(WINDOW *win, const char *fmt, va_list varglist);

       /* obsolete */
       int vwprintw(WINDOW *win, const char *fmt, va_list varglist);

DESCRIPTION         top

       printw, wprintw, mvprintw, and mvwprintw are analogous to
       printf(3).  In effect, the string that would be output by
       printf(3) is instead output as though waddstr(3X) were used with
       win (or stdscr) as its first argument.

       vwprintw and vw_printw are analogous to vprintf(3), and perform a
       wprintw using a variable argument list.  The third argument is a
       va_list, a pointer to a list of arguments, as defined in stdarg.h.

RETURN VALUE         top

       These functions return ERR upon failure and OK upon success.

       In ncurses, failure occurs if the library cannot allocate enough
       memory for the buffer into which the output is formatted, or if
       the window pointer win is null.

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

NOTES         top

       No wide character counterpart functions are defined by the “wide”
       ncurses configuration nor by any standard.  To format and write a
       wide-character string to a curses window, consider using
       swprintf(3) and waddwstr(3X) or similar.

PORTABILITY         top

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

       ncurses defines vw_printw and vwprintw identically to support
       legacy applications.  However, the latter is obsolete.

       •   X/Open Curses Issue 4 Version 2 (1996), marked vwprintw as
           requiring varargs.h and “TO BE WITHDRAWN”, and specified
           vw_printw using the stdarg.h interface.

       •   X/Open Curses Issue 5, Draft 2 (December 2007) marked vwprintw
           (along with vwscanw and the termcap interface) as withdrawn.
           After incorporating review comments, this became X/Open Curses
           Issue 7 (2009).

       •   ncurses provides vwprintw, but marks it as deprecated.

HISTORY         top

       4BSD (1980) introduced wprintw and its variants.  It implemented
       all as functions, not macros; this initial distribution of curses
       preceded the ANSI C standard of 1989, prior to which a variadic
       macro facility was not widely available in the language.  printw
       went unused in Berkeley distributions until 4.1cBSD (1983), which
       employed it in games.  4BSD's wprintw did not use varargs.h, which
       had been available since Seventh Edition Unix (1979).  In 1991 (a
       couple of years after SVr4 was generally available, and after the
       C standard was published), other developers updated the library,
       using stdarg.h internally in 4.4BSD curses.  Even with this
       improvement, BSD curses did not use function prototypes (nor even
       declare functions) in curses.h until 1992.

       4BSD documented printw and wprintw tersely as “printf on stdscr”
       and “printf on win”, respectively.

       SVr3 summarized the functions in three lines, asserting that they
       were analogous to printf(3) and explaining that the string that
       printf(3) would write to the standard output stream would instead
       be output using waddstr to the given window.

       SVr3 added vwprintw, describing its third parameter as a va_list,
       defined in varargs.h, and referred the reader to the manual pages
       for varargs and vprintf for detailed descriptions.

       SVr4 (1989) introduced no new variations of printw, but provided
       for using either varargs.h or stdarg.h to define the va_list type.

       X/Open Curses Issue 4 (1995), defined vw_printw to replace
       vwprintw, stating that its va_list type is defined in stdarg.h.

SEE ALSO         top

       curses(3X), curs_addstr(3X), curs_scanw(3X), printf(3), vprintf(3)

COLOPHON         top

       This page is part of the ncurses (new curses) project.
       Information about the project can be found at 
       ⟨https://invisible-island.net/ncurses/ncurses.html⟩.  If you have a
       bug report for this manual page, send it to bug-ncurses@gnu.org.
       This page was obtained from the tarball ncurses-6.6.tar.gz fetched
       from ⟨https://ftp.gnu.org/gnu/ncurses/⟩ on 2026-01-16.  If you
       discover any rendering problems in this HTML version of the page,
       or you believe there is a better or more up-to-date source for the
       page, or you have corrections or improvements to the information
       in this COLOPHON (which is not part of the original manual page),
       send a mail to man-pages@man7.org

ncurses @NCURSES_MAJOR@.@NCU... 2025-08-16                curs_printw(3X)