PUTC(3) | Library Functions Manual | PUTC(3)

# NAME

`fputc`, `putc`, `putchar`, `putc_unlocked`, `putchar_unlocked`, `putw` — output a character or word to a stream

# SYNOPSIS

`#include <stdio.h>`

int
`fputc`(int c, FILE *stream);

int
`putc`(int c, FILE *stream);

int
`putchar`(int c);

int
`putc_unlocked`(int c, FILE *stream);

int
`putchar_unlocked`(int c);

int
`putw`(int w, FILE *stream);

# DESCRIPTION

The `fputc`() function writes the character c (converted to an unsigned char) to the output stream pointed to by stream.

`putc`() acts essentially identically to `fputc`(), but is a macro that expands in-line. It may evaluate stream more than once, so arguments given to `putc`() should not be expressions with potential side effects.

`putchar`() is identical to `putc`() with an output stream of stdout.

The `putc_unlocked`() and `putchar_unlocked`() functions perform the same action, but do not obtain the stream lock. They require that the stream first be locked with flockfile(3) for thread safe operation.

The `putw`() function writes the specified int w to the named output stream.

# RETURN VALUES

The functions `fputc`(), `putc`(), and `putchar`() return the character written. If an error occurs, the value `EOF` is returned and the global variable errno is set to indicate the error. The `putw`() function returns 0 on success; `EOF` is returned if a write error occurs, or if an attempt is made to write a read-only stream. The global variable errno may be set to indicate the error.

# ERRORS

The function `putw`() may also fail and set errno for any of the errors specified for the routines write(2) or realloc(3).

# SEE ALSO

ferror(3), flockfile(3), fopen(3), getc(3), putwc(3), stdio(3)

# STANDARDS

The functions `fputc`(), `putc`(), and `putchar`(), conform to ANSI X3.159-1989 (“ANSI C89”). The `putc_unlocked`() and `putchar_unlocked`() functions conform to.

# HISTORY

The `putc`() and `putw`() functions first appeared in Version 1 AT&T UNIX; `putchar`() in Version 2 AT&T UNIX; and `fputc`() in Version 7 AT&T UNIX. The `putc_unlocked`() and `putchar_unlocked`() functions have been available since OpenBSD 2.5.

# BUGS

Since the size and byte order of an int may vary from one machine to another, `putw`() is not recommended for portable applications.

July 25, 2025 | Debian