# curs_printw 3x 2025-08-16 ncurses 6.5 Library calls

    curs_printw(3x)                  Library calls                 curs_printw(3x)

## NAME

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

## SYNOPSIS

           #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

           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

           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

           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

           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.

           o   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.

           o   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).

           o   ncurses provides vwprintw, but marks it as deprecated.

## HISTORY

           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

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

    ncurses 6.5                       2025-08-16                   curs_printw(3x)