C String Output

Table of Contents

What is String Output?

String output in C refers to displaying or printing string data to the console (standard output) using various functions. The most common functions are printf(), puts(), and fputs().

Main String Output Functions

FunctionHeaderAdds Newline?Formatting?Use Case
printf()<stdio.h>NoYesFormatted output
puts()<stdio.h>YesNoSimple string output
fputs()<stdio.h>NoNoFile/stream output
putchar()<stdio.h>NoNoSingle character

1. printf() - Formatted String Output

The most versatile output function for strings.

Basic Usage

#include <stdio.h>
int main() {
// Simple string output
printf("Hello World");
// With newline
printf("Hello World\n");
// Multiple strings
printf("Hello " "World\n");
// String variable
char name[] = "Alice";
printf("Name: %s\n", name);
return 0;
}

Format Specifiers with Strings

#include <stdio.h>
int main() {
char name[] = "Bob";
char city[] = "New York";
int age = 25;
// Basic string formatting
printf("Name: %s\n", name);
// Multiple strings
printf("%s lives in %s\n", name, city);
// Mixing with other types
printf("%s is %d years old\n", name, age);
// Field width (minimum characters)
printf("|%10s|\n", name);   // Right aligned, width 10
printf("|%-10s|\n", name);  // Left aligned, width 10
// Precision (maximum characters to print)
printf("%.3s\n", "Hello");   // Prints "Hel"
printf("%.5s\n", "Hello");   // Prints "Hello"
// Combining width and precision
printf("|%10.3s|\n", "Hello");  // Right aligned, width 10, max 3 chars
return 0;
}

Output:

|       Bob|
|Bob       |
Hel
Hello
|       Hel|

Escape Sequences in printf()

#include <stdio.h>
int main() {
// Newline
printf("Line 1\nLine 2\n");
// Tab
printf("Column1\tColumn2\tColumn3\n");
// Double quote
printf("She said, \"Hello!\"\n");
// Backslash
printf("C:\\Program Files\\MyApp\n");
// Carriage return (overwrites beginning)
printf("Hello\rWorld\n");  // Prints "World" (overwrites Hello)
// Backspace
printf("Hello\b\b\b   \n");  // Removes "llo"
return 0;
}

Output:

Line 1
Line 2
Column1 Column2 Column3
She said, "Hello!"
C:\Program Files\MyApp
World
Hel

2. puts() - Simple String Output

puts() automatically adds a newline at the end.

#include <stdio.h>
int main() {
char str1[] = "Hello";
char str2[] = "World";
// Automatically adds newline
puts("Hello World");
puts(str1);
puts(str2);
// Cannot use formatting
// puts("Value: %d", 10);  // WRONG! puts doesn't format
// Multiple puts calls
puts("First line");
puts("Second line");
return 0;
}

Output:

Hello World
Hello
World
First line
Second line

puts() vs printf()

#include <stdio.h>
int main() {
char name[] = "Charlie";
int age = 30;
// puts is simpler for plain strings
puts("Simple message");
// printf needed for formatting
printf("Name: %s, Age: %d\n", name, age);
// puts adds newline automatically
printf("No newline");
puts("Has newline");
// Manual newline with printf
printf("Has newline\n");
return 0;
}

3. fputs() - File String Output (Also Console)

fputs() is like puts() but without automatic newline and can output to any stream.

#include <stdio.h>
int main() {
char str[] = "Hello World";
// Output to stdout (console) - no automatic newline
fputs("No newline here", stdout);
fputs("Continues on same line", stdout);
fputs("\nAdd newline manually", stdout);
printf("\n");
// Output string variable
fputs(str, stdout);
fputs("\n", stdout);
return 0;
}

Output:

No newline hereContinues on same line
Add newline manually
Hello World

4. putchar() - Single Character Output

For outputting characters one at a time.

#include <stdio.h>
int main() {
char str[] = "Hello";
// Output single character
putchar('A');
putchar('\n');
// Output string character by character
for(int i = 0; str[i] != '\0'; i++) {
putchar(str[i]);
}
putchar('\n');
// Using with escape sequences
putchar('H');
putchar('i');
putchar('!');
putchar('\n');
return 0;
}

Output:

A
Hello
Hi!

5. Advanced printf() String Formatting

Width and Precision Control

#include <stdio.h>
int main() {
char str[] = "Programming";
// Minimum width (right-aligned)
printf("|%15s|\n", str);
printf("|%20s|\n", str);
// Minimum width (left-aligned)
printf("|%-15s|\n", str);
printf("|%-20s|\n", str);
// Maximum characters to print
printf("|%.5s|\n", str);   // First 5 chars
printf("|%.10s|\n", str);  // First 10 chars
// Combination
printf("|%15.5s|\n", str);   // Width 15, max 5 chars (right)
printf("|%-15.5s|\n", str);  // Width 15, max 5 chars (left)
// Dynamic width and precision
int width = 10;
int precision = 4;
printf("|%*.*s|\n", width, precision, str);
return 0;
}

Output:

|   Programming|
|        Programming|
|Programming   |
|Programming         |
|Progr|
|Programming|
|           Progr|
|Progr           |
|       Prog|

Printing Strings from Arrays of Strings

#include <stdio.h>
int main() {
// Array of strings
char fruits[3][20] = {
"Apple",
"Banana",
"Cherry"
};
// Print all fruits
for(int i = 0; i < 3; i++) {
printf("Fruit %d: %s\n", i+1, fruits[i]);
}
// Formatted table
printf("\n%-10s %-10s\n", "Index", "Fruit");
printf("%-10s %-10s\n", "-----", "-----");
for(int i = 0; i < 3; i++) {
printf("%-10d %-10s\n", i, fruits[i]);
}
return 0;
}

Output:

Fruit 1: Apple
Fruit 2: Banana
Fruit 3: Cherry
Index      Fruit     
-----      -----     
0          Apple     
1          Banana    
2          Cherry

6. Practical Examples

Example 1: Formatted Report

#include <stdio.h>
#include <string.h>
int main() {
char names[5][20] = {"Alice", "Bob", "Charlie", "Diana", "Eve"};
int scores[5] = {95, 87, 92, 88, 96};
// Print header
printf("\n========== GRADE REPORT ==========\n");
printf("%-10s %-10s %s\n", "Name", "Score", "Grade");
printf("%-10s %-10s %s\n", "----", "-----", "-----");
// Print each student
for(int i = 0; i < 5; i++) {
char grade;
if(scores[i] >= 90) grade = 'A';
else if(scores[i] >= 80) grade = 'B';
else grade = 'C';
printf("%-10s %-10d %c\n", names[i], scores[i], grade);
}
printf("==================================\n");
return 0;
}

Output:

========== GRADE REPORT ==========
Name       Score      Grade
----       -----      -----
Alice      95         A
Bob        87         B
Charlie    92         A
Diana      88         B
Eve        96         A
==================================

Example 2: Progress Bar

#include <stdio.h>
#include <string.h>
void printProgressBar(int percentage) {
printf("[");
int bars = percentage / 2;  // 50 bars max
for(int i = 0; i < 50; i++) {
if(i < bars) {
printf("=");
} else if(i == bars && percentage < 100) {
printf(">");
} else {
printf(" ");
}
}
printf("] %3d%%\r", percentage);
fflush(stdout);  // Force immediate output
}
int main() {
for(int i = 0; i <= 100; i += 10) {
printProgressBar(i);
// Simulate work
for(int j = 0; j < 100000000; j++);
}
printf("\nComplete!\n");
return 0;
}

Example 3: Text Centering

#include <stdio.h>
#include <string.h>
void printCentered(const char *str, int width) {
int len = strlen(str);
int padding = (width - len) / 2;
printf("%*s%s%*s\n", padding, "", str, width - len - padding, "");
}
int main() {
int screenWidth = 40;
printCentered("WELCOME", screenWidth);
printCentered("to", screenWidth);
printCentered("C Programming", screenWidth);
printCentered("---", screenWidth);
printCentered("Learn by Doing", screenWidth);
return 0;
}

Output:

              WELCOME               
to                 
C Programming            
---                 
Learn by Doing

7. String Output to Different Destinations

Output to stderr (Error Stream)

#include <stdio.h>
int main() {
// Normal output to stdout
printf("This is normal output\n");
// Error output to stderr
fprintf(stderr, "This is an error message\n");
// Using fputs with stderr
fputs("Critical error occurred!\n", stderr);
return 0;
}

Output to File (Brief Example)

#include <stdio.h>
int main() {
FILE *file = fopen("output.txt", "w");
if(file != NULL) {
fprintf(file, "Writing string to file\n");
fputs("Another line in file\n", file);
fclose(file);
printf("Data written to output.txt\n");
}
return 0;
}

8. Common Mistakes and Best Practices

#include <stdio.h>
#include <string.h>
int main() {
// MISTAKE 1: Forgetting null terminator
char str1[5] = "Hello";  // No space for \0
// printf("%s", str1);  // May print extra garbage
char str2[6] = "Hello";  // Correct (5 chars + \0)
printf("Correct: %s\n", str2);
// MISTAKE 2: Using puts with uninitialized string
char str3[10];  // Contains garbage
// puts(str3);  // Prints garbage until \0 found
// Always initialize
char str4[10] = "";  // First char is \0
puts("Empty string is safe");
// MISTAKE 3: Missing newline confusion
printf("First line");
printf("Second line");  // Prints "First lineSecond line"
puts("");  // Add newline
printf("Better with newline\n");
// BEST PRACTICE: Flush output when needed
printf("Processing...");
fflush(stdout);  // Force immediate display
return 0;
}

Quick Reference: String Output Functions

FunctionSyntaxNewlineFormatsUse Case
printfprintf("text %s", str);NoYesMost common, formatted
putsputs("text");YesNoSimple strings
fputsfputs("text", stdout);NoNoStream output
putcharputchar('A');NoNoSingle character
fprintffprintf(stderr, "%s", str);NoYesFile/error output

Summary

  • printf() is the most versatile - use for formatted output
  • puts() is simplest for plain strings with automatic newline
  • fputs() gives control over newline and output destination
  • Use escape sequences for special characters (\n, \t, \")
  • Field width and precision control formatting with printf
  • Always ensure strings are null-terminated before printing
  • fflush(stdout) forces immediate output when needed

Complete C Programming Guide + Compilers Collection


1. C srand() Function – Understanding Seed Initialization

https://macronepal.com/understanding-the-c-srand-function
Explains how srand() initializes the pseudo-random number generator in C by setting a seed value. Using the same seed produces the same sequence, while time(NULL) gives different results each run.


2. C rand() Function Mechanics and Limitations

https://macronepal.com/c-rand-function-mechanics-and-limitations
Explains how rand() generates pseudo-random numbers between 0 and RAND_MAX, its deterministic nature, and limitations for security use cases.


3. C log() Function

https://macronepal.com/c-log-function-2
Covers natural logarithm calculation using <math.h> and its applications.


4. Mastering Date and Time in C

https://macronepal.com/mastering-date-and-time-in-c
Explains <time.h> functions like time(), clock(), difftime(), and struct tm.


5. Mastering time_t Type in C

https://macronepal.com/mastering-the-c-time_t-type-for-time-management
Explains time representation as seconds since Unix epoch and conversion functions.


6. C exp() Function

https://macronepal.com/c-exp-function-mechanics-and-implementation
Explains exponential function exp(x) and its scientific applications.


7. C log() Function (Alternate Guide)

https://macronepal.com/c-log-function
Comparison of log() and log10() with usage examples.


8. C log10() Function

https://macronepal.com/mastering-the-log10-function-in-c
Explains base-10 logarithm for engineering and scientific applications.


9. C tan() Function

https://macronepal.com/understanding-the-c-tan-function
Explains tangent function and radian-based calculations.


10. Random Numbers in C (Secure vs Predictable)

https://macronepal.com/mastering-c-random-numbers-for-secure-and-predictable-applications
Explains difference between rand() and secure randomness methods.


11. Free Online C Compiler

https://macronepal.com/free-online-c-code-compiler-2
Browser-based compiler for testing C programs instantly.


C Functions, Arguments, Parameters & Flow

Mastering Functions in C – Complete Guide

https://macronepal.com/c/mastering-functions-in-c-a-complete-guide/
Covers function structure, modular programming, and real-world usage.


Function Arguments in C

https://macronepal.com/c-function-arguments/
Explains how arguments are passed and used in function calls.


Function Parameters in C

https://macronepal.com/c-function-parameters/
Explains defining inputs for functions and matching them with arguments.


Function Declarations in C

https://macronepal.com/c-function-declarations-syntax-rules-and-best-practices/
Covers prototypes, syntax rules, and best practices.


Function Calls in C

https://macronepal.com/understanding-function-calls-in-c-syntax-mechanics-and-best-practices/
Explains execution flow and parameter handling during function calls.


Void Functions in C

https://macronepal.com/understanding-void-functions-in-c-syntax-patterns-and-best-practices/
Explains functions that do not return values.


Return Values in C

https://macronepal.com/c-return-values-mechanics-types-and-best-practices/
Explains different return types and how functions return results.


Pass-by-Value in C

https://macronepal.com/aws/understanding-pass-by-value-in-c-mechanics-implications-and-best-practices/
Explains how copies of variables are passed into functions.


Pass-by-Reference in C

https://macronepal.com/c/understanding-pass-by-reference-in-c-pointers-semantics-and-safe-practices/
Explains using pointers to modify original variables.


C strstr() Function

https://macronepal.com/aws/c-strstr-function/
Explains substring search inside strings in C.


C Preprocessor & Macros

https://macronepal.com/mastering-c-variadic-macros-for-flexible-debugging/
https://macronepal.com/mastering-the-stdc-macro-in-c/
https://macronepal.com/c-time-macro-mechanics-and-usage/
https://macronepal.com/understanding-the-c-date-macro/
https://macronepal.com/c-file-type/
https://macronepal.com/mastering-c-line-macro-for-debugging-and-diagnostics/
https://macronepal.com/mastering-predefined-macros-in-c/
https://macronepal.com/c-error-directive-mechanics-and-usage/
https://macronepal.com/understanding-the-c-pragma-directive/
https://macronepal.com/c-include-directive/


C Structures, Memory, Scope & Linkage

https://macronepal.com/mastering-structures-in-c/
https://macronepal.com/c-structure-declaration-mechanics-and-usage/
https://macronepal.com/c-structure-initialization-mechanics-and-best-practices/
https://macronepal.com/mastering-c-structure-member-access-for-reliable-data-handling/
https://macronepal.com/c-nested-structures/
https://macronepal.com/mastering-arrays-of-structures-in-c/
https://macronepal.com/c-structure-pointers-mechanics-and-implementation/
https://macronepal.com/understanding-c-structure-parameter-passing-mechanics/
https://macronepal.com/mastering-c-returning-structures-for-efficient-data-flow/
https://macronepal.com/c-self-referential-structures/
https://macronepal.com/mastering-structure-alignment-in-c/
https://macronepal.com/c-structure-padding-mechanics-and-optimization/
https://macronepal.com/understanding-c-flexible-array-members-mechanics-and-usage/
https://macronepal.com/mastering-c-anonymous-structures-for-flattened-data-layouts/
https://macronepal.com/c-unions/
https://macronepal.com/mastering-c-name-mangling-and-symbol-decoration/
https://macronepal.com/c-no-linkage-mechanics-and-scope-isolation/
https://macronepal.com/understanding-c-internal-linkage-mechanics-and-architecture/


C Scope, Storage Classes & Typedef

https://macronepal.com/mastering-function-prototype-scope-in-c/
https://macronepal.com/c-function-scope-mechanics-and-visibility/
https://macronepal.com/understanding-c-file-scope-mechanics-and-architecture/
https://macronepal.com/mastering-c-scope-rules-for-predictable-name-resolution/
https://macronepal.com/c-scope-rules/
https://macronepal.com/mastering-c-register-storage-class-for-historical-context-and-modern-alternatives/
https://macronepal.com/mastering-_thread_local-in-c/
https://macronepal.com/c-extern-storage-class-mechanics-and-usage/
https://macronepal.com/understanding-the-c-static-storage-class-mechanics-and-usage/
https://macronepal.com/c-auto-storage-class/
https://macronepal.com/c-typedef-with-pointers/


Extra Articles

https://macronepal.com/13757-2/
https://macronepal.com/13748-2/
https://macronepal.com/13747-2/
https://macronepal.com/13746-2/
https://macronepal.com/13745-2/
https://macronepal.com/13708-2/
https://macronepal.com/13707-2/
https://macronepal.com/13702-2/


Online Compilers

https://macronepal.com/free-html-online-code-compiler/
https://macronepal.com/free-online-python-code-compiler/
https://macronepal.com/free-online-python2-code-compiler/
https://macronepal.com/free-online-java-code-compiler/
https://macronepal.com/free-online-javascript-code-compiler/
https://macronepal.com/free-online-node-js-code-compiler/
https://macronepal.com/free-online-c-code-compiler/
https://macronepal.com/free-online-c-code-compiler-2/
https://macronepal.com/free-online-c-code-compiler-3/
https://macronepal.com/free-online-php-code-compiler/
https://macronepal.com/free-online-ruby-code-compiler/
https://macronepal.com/free-online-perl-code-compiler/
https://macronepal.com/free-online-lua-code-compiler/
https://macronepal.com/free-online-tcl-code-compiler/
https://macronepal.com/free-online-groovy-code-compiler/
https://macronepal.com/free-online-j-shell-code-compiler/
https://macronepal.com/free-online-haskell-code-compiler/
https://macronepal.com/free-online-scala-code-compiler/
https://macronepal.com/free-online-common-lisp-code-compiler/
https://macronepal.com/free-online-d-code-compiler/
https://macronepal.com/free-online-ada-code-compiler/
https://macronepal.com/free-erlang-code-compiler/
https://macronepal.com/free-online-assembly-code-compiler/

Complete Guide to Core & Advanced C Programming Concepts (Functions, Strings, Arrays, Loops, I/O, Control Flow)

https://macronepal.com/bash/building-blocks-of-c-a-complete-guide-to-functions/
Explains how functions in C work as reusable blocks of code, including declaration, definition, parameters, return values, and modular programming structure.

https://macronepal.com/bash/the-heart-of-text-processing-a-complete-guide-to-strings-in-c-2/
Explains how strings are handled in C using character arrays, string manipulation techniques, and common library functions for text processing.

https://macronepal.com/bash/the-cornerstone-of-data-organization-a-complete-guide-to-arrays-in-c/
Explains arrays in C as structured memory storage for multiple values, including indexing, initialization, and efficient data organization.

https://macronepal.com/bash/guaranteed-execution-a-complete-guide-to-the-do-while-loop-in-c/
Explains the do-while loop in C, where the loop body executes at least once before checking the condition.

https://macronepal.com/bash/mastering-iteration-a-complete-guide-to-the-for-loop-in-c/
Explains the for loop in C, including initialization, condition checking, and increment/decrement for controlled iteration.

https://macronepal.com/bash/mastering-iteration-a-complete-guide-to-while-loops-in-c/
Explains the while loop in C, focusing on condition-based repetition and proper loop control mechanisms.

https://macronepal.com/bash/beyond-if-else-a-complete-guide-to-switch-case-in-c/
Explains switch-case statements in C, enabling multi-branch decision-making based on variable values.

https://macronepal.com/bash/mastering-conditional-logic-a-complete-guide-to-if-else-statements-in-c/
Explains if-else statements in C for decision-making and controlling program flow based on conditions.

https://macronepal.com/bash/mastering-the-fundamentals-a-complete-guide-to-arithmetic-operations-in-c/
Explains arithmetic operations in C such as addition, subtraction, multiplication, division, and operator precedence.

https://macronepal.com/bash/foundation-of-c-programming-a-complete-guide-to-basic-input-output/
Explains basic input and output in C using scanf and printf for interacting with users and displaying results.

Online C Code Compiler
https://macronepal.com/free-online-c-code-compiler-2/

Leave a Reply

Your email address will not be published. Required fields are marked *


Macro Nepal Helper