Defined in header <stdio.h>
int puts( const char *str );

Writes every character from the null-terminated string str and one additional newline character '\n' to the output stream stdout, as if by repeatedly executing fputc.

The terminating null character from str is not written.


str - character string to be written

Return value

On success, returns a non-negative value.

On failure, returns EOF and sets the error indicator (see ferror()) on stream.


The puts function appends the newline character to the output, while fputs function does not.

Different implementations return different non-negative numbers: some return the last character written, some return the number of characters written (or INT_MAX if the string was longer than that), some simply return a non-negative constant.

A typical cause of failure for puts is running out of space on the file system, when stdout is redirected to a file.


#include <stdio.h>
int main(void)
    int rc = puts("Hello World");
    if (rc == EOF)
       perror("puts()"); // POSIX requires that errno is set


Hello World


  • C11 standard (ISO/IEC 9899:2011):
    • The puts function (p: 333)
  • C99 standard (ISO/IEC 9899:1999):
    • The puts function (p: 299)
  • C89/C90 standard (ISO/IEC 9899:1990):
    • The puts function

See also

writes a character string to a file stream
prints formatted output to stdout, a file stream or a buffer
C++ documentation for puts

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.