12.7 Simple Output by Characters or Lines

This section describes functions for performing character- and line-oriented output.

These narrow stream functions are declared in the header file stdio.h and the wide stream functions in wchar.h.

Function: int fputc (int c, FILE *stream)

Preliminary: | MT-Safe | AS-Unsafe corrupt | AC-Unsafe corrupt lock | See POSIX Safety Concepts.

The fputc function converts the character c to type unsigned char, and writes it to the stream stream. EOF is returned if a write error occurs; otherwise the character c is returned.

Function: wint_t fputwc (wchar_t wc, FILE *stream)

Preliminary: | MT-Safe | AS-Unsafe corrupt | AC-Unsafe corrupt lock | See POSIX Safety Concepts.

The fputwc function writes the wide character wc to the stream stream. WEOF is returned if a write error occurs; otherwise the character wc is returned.

Function: int fputc_unlocked (int c, FILE *stream)

Preliminary: | MT-Safe race:stream | AS-Unsafe corrupt | AC-Unsafe corrupt | See POSIX Safety Concepts.

The fputc_unlocked function is equivalent to the fputc function except that it does not implicitly lock the stream.

Function: wint_t fputwc_unlocked (wchar_t wc, FILE *stream)

Preliminary: | MT-Safe race:stream | AS-Unsafe corrupt | AC-Unsafe corrupt | See POSIX Safety Concepts.

The fputwc_unlocked function is equivalent to the fputwc function except that it does not implicitly lock the stream.

This function is a GNU extension.

Function: int putc (int c, FILE *stream)

Preliminary: | MT-Safe | AS-Unsafe corrupt | AC-Unsafe corrupt lock | See POSIX Safety Concepts.

This is just like fputc, except that it may be implemented as a macro and may evaluate the stream argument more than once. Therefore, stream should never be an expression with side-effects.

Function: wint_t putwc (wchar_t wc, FILE *stream)

Preliminary: | MT-Safe | AS-Unsafe corrupt | AC-Unsafe corrupt lock | See POSIX Safety Concepts.

This is just like fputwc, except that it may be implemented as a macro and may evaluate the stream argument more than once. Therefore, stream should never be an expression with side-effects.

Function: int putc_unlocked (int c, FILE *stream)

Preliminary: | MT-Safe race:stream | AS-Unsafe corrupt | AC-Unsafe corrupt | See POSIX Safety Concepts.

The putc_unlocked function is equivalent to the putc function except that it does not implicitly lock the stream.

Function: wint_t putwc_unlocked (wchar_t wc, FILE *stream)

Preliminary: | MT-Safe race:stream | AS-Unsafe corrupt | AC-Unsafe corrupt | See POSIX Safety Concepts.

The putwc_unlocked function is equivalent to the putwc function except that it does not implicitly lock the stream.

This function is a GNU extension.

Function: int putchar (int c)

Preliminary: | MT-Safe | AS-Unsafe corrupt | AC-Unsafe corrupt lock | See POSIX Safety Concepts.

The putchar function is equivalent to putc with stdout as the value of the stream argument.

Function: wint_t putwchar (wchar_t wc)

Preliminary: | MT-Safe | AS-Unsafe corrupt | AC-Unsafe corrupt lock | See POSIX Safety Concepts.

The putwchar function is equivalent to putwc with stdout as the value of the stream argument.

Function: int putchar_unlocked (int c)

Preliminary: | MT-Unsafe race:stdout | AS-Unsafe corrupt | AC-Unsafe corrupt | See POSIX Safety Concepts.

The putchar_unlocked function is equivalent to the putchar function except that it does not implicitly lock the stream.

Function: wint_t putwchar_unlocked (wchar_t wc)

Preliminary: | MT-Unsafe race:stdout | AS-Unsafe corrupt | AC-Unsafe corrupt | See POSIX Safety Concepts.

The putwchar_unlocked function is equivalent to the putwchar function except that it does not implicitly lock the stream.

This function is a GNU extension.

Function: int fputs (const char *s, FILE *stream)

Preliminary: | MT-Safe | AS-Unsafe corrupt | AC-Unsafe corrupt lock | See POSIX Safety Concepts.

The function fputs writes the string s to the stream stream. The terminating null character is not written. This function does not add a newline character, either. It outputs only the characters in the string.

This function returns EOF if a write error occurs, and otherwise a non-negative value.

For example:

fputs ("Are ", stdout);
fputs ("you ", stdout);
fputs ("hungry?\n", stdout);

outputs the text ‘Are you hungry?’ followed by a newline.

Function: int fputws (const wchar_t *ws, FILE *stream)

Preliminary: | MT-Safe | AS-Unsafe corrupt | AC-Unsafe corrupt lock | See POSIX Safety Concepts.

The function fputws writes the wide character string ws to the stream stream. The terminating null character is not written. This function does not add a newline character, either. It outputs only the characters in the string.

This function returns WEOF if a write error occurs, and otherwise a non-negative value.

Function: int fputs_unlocked (const char *s, FILE *stream)

Preliminary: | MT-Safe race:stream | AS-Unsafe corrupt | AC-Unsafe corrupt | See POSIX Safety Concepts.

The fputs_unlocked function is equivalent to the fputs function except that it does not implicitly lock the stream.

This function is a GNU extension.

Function: int fputws_unlocked (const wchar_t *ws, FILE *stream)

Preliminary: | MT-Safe race:stream | AS-Unsafe corrupt | AC-Unsafe corrupt | See POSIX Safety Concepts.

The fputws_unlocked function is equivalent to the fputws function except that it does not implicitly lock the stream.

This function is a GNU extension.

Function: int puts (const char *s)

Preliminary: | MT-Safe | AS-Unsafe corrupt | AC-Unsafe lock corrupt | See POSIX Safety Concepts.

The puts function writes the string s to the stream stdout followed by a newline. The terminating null character of the string is not written. (Note that fputs does not write a newline as this function does.)

puts is the most convenient function for printing simple messages. For example:

puts ("This is a message.");

outputs the text ‘This is a message.’ followed by a newline.

Function: int putw (int w, FILE *stream)

Preliminary: | MT-Safe | AS-Unsafe corrupt | AC-Unsafe lock corrupt | See POSIX Safety Concepts.

This function writes the word w (that is, an int) to stream. It is provided for compatibility with SVID, but we recommend you use fwrite instead (see Block Input/Output).