ZetCode

C puts function

last modified April 6, 2025

Console output is a fundamental skill in C programming, enabling you to display information to users. The puts function is a simple yet powerful tool for outputting strings. This tutorial explains puts in detail, covering its syntax, behavior, and practical applications. Mastering puts helps create clear, readable output in your C programs.

What Is puts?

The puts function in C writes a string to standard output followed by a newline character. It's declared in stdio.h and takes one argument: a pointer to the null-terminated string to be printed. Unlike printf, puts automatically appends a newline. It returns a non-negative value on success or EOF on error. This function is efficient for simple string output without formatting needs.

Basic puts Example

Here's the simplest way to use puts to display a string.

basic_puts.c
#include <stdio.h>

int main() {
    puts("Hello, World!");  // Outputs string with newline
    return 0;
}

This example demonstrates the most straightforward use of puts. The function takes the string literal "Hello, World!" and outputs it to the console. The output automatically includes a newline at the end. This is simpler than printf when no formatting is needed.

puts with Variables

Learn how to use puts with string variables instead of literals.

puts_variable.c
#include <stdio.h>

int main() {
    char message[] = "Learning C programming";
    puts(message);  // Outputs string variable
    return 0;
}

Here, we declare a character array message containing a string. puts accepts this variable as its argument. The function works with any null-terminated string, whether a literal or variable. Remember that puts always adds a newline, unlike printf.

puts vs printf

Compare puts with printf to understand their differences.

puts_vs_printf.c
#include <stdio.h>

int main() {
    printf("Using printf: needs manual newline\n");
    puts("Using puts: automatic newline");
    printf("Notice the difference in syntax");
    puts(" and behavior between these functions.");
    return 0;
}

This example highlights key differences between puts and printf. printf requires explicit newline characters (\n), while puts adds them automatically. printf supports formatting, whereas puts is simpler for plain string output. Choose based on your specific needs.

puts Return Value

Understand how to use the return value of puts for error checking.

puts_return.c
#include <stdio.h>

int main() {
    int result = puts("Testing puts return value");
    
    if (result == EOF) {
        perror("puts failed");
        return 1;
    }
    
    printf("puts returned: %d\n", result);
    return 0;
}

puts returns a non-negative value (usually 0) on success or EOF on failure. This example checks the return value to detect output errors. While output failures are rare in console applications, checking return values is good practice, especially in robust programs.

Multiple puts Calls

See how multiple puts calls create separate lines automatically.

multi_puts.c
#include <stdio.h>

int main() {
    puts("Line 1");  // First line
    puts("Line 2");  // Second line
    puts("Line 3");  // Third line
    return 0;
}

Each puts call outputs its string followed by a newline, creating distinct lines without manual \n characters. This behavior makes puts convenient for multi-line output. The automatic newline is the main advantage over printf for simple string output.

puts with Escape Sequences

Explore how puts handles escape sequences in strings.

puts_escapes.c
#include <stdio.h>

int main() {
    puts("This string contains\na newline character");
    puts("Tabs:\tFirst\tSecond\tThird");
    puts("Special chars: \\ \" \'");
    return 0;
}

puts processes standard C escape sequences like \n, \t, \\, \", and \' in the same way as printf. The example shows newlines, tabs, and special character escaping. Remember that puts adds its own newline after processing these escapes.

puts with Array of Strings

Output multiple strings from an array using puts in a loop.

puts_array.c
#include <stdio.h>

int main() {
    char *messages[] = {
        "First message",
        "Second message",
        "Third message",
        NULL  // Sentinel value
    };
    
    for (int i = 0; messages[i] != NULL; i++) {
        puts(messages[i]);
    }
    
    return 0;
}

This example demonstrates using puts with an array of strings. We define a NULL-terminated array and iterate through it with a for loop. Each string is passed to puts, creating clean multi-line output. This pattern is useful for menus, help text, or any structured output.

Best Practices for Using puts

Source

C puts Documentation

This tutorial has explored the puts function in C, from basic usage to advanced techniques. Understanding puts helps write cleaner, more efficient output code. Combine it with other I/O functions for comprehensive program output.

Author

My name is Jan Bodnar, and I'm a dedicated programmer with a deep passion for coding. Since 2007, I've been sharing my expertise through over 1,400 articles and 8 e-books. With more than a decade of teaching experience, I strive to make programming accessible and engaging.

List C Standard Library.