Skip to main content

C# Input Output

Input and output operations are essential for any program to interact with users. In C#, the Console class provides methods to read input from users and display output on the console window. This guide will walk you through the fundamentals of handling input and output in C# console applications.

Introduction to Console I/O in C#

The Console class in C# is part of the System namespace and serves as the primary interface for reading from and writing to the console window. Whether you're creating simple command-line tools or learning the basics of C#, understanding how to handle input and output is crucial.

Basic Output Operations

Console.Write and Console.WriteLine

The most common methods for displaying output in C# are Console.Write() and Console.WriteLine().

  • Console.Write(): Outputs text without adding a new line at the end
  • Console.WriteLine(): Outputs text and adds a new line at the end

Let's see these methods in action:

csharp
Console.Write("Hello, ");
Console.Write("World!");
// Output: Hello, World!

Console.WriteLine("Hello, World!");
Console.WriteLine("Welcome to C#!");
// Output:
// Hello, World!
// Welcome to C#!

Formatting Output

You can format your output using string interpolation, composite formatting, or the string format method:

csharp
string name = "John";
int age = 25;

// Using string interpolation (recommended)
Console.WriteLine($"Name: {name}, Age: {age}");

// Using composite formatting
Console.WriteLine("Name: {0}, Age: {1}", name, age);

// Using string.Format
string message = string.Format("Name: {0}, Age: {1}", name, age);
Console.WriteLine(message);

// All produce: Name: John, Age: 25

Formatting Numbers and Dates

C# provides various format specifiers for displaying numbers and dates:

csharp
double price = 123.45678;
DateTime now = DateTime.Now;

// Currency format
Console.WriteLine($"Price: {price:C}"); // Output: Price: $123.46

// Number with two decimal places
Console.WriteLine($"Rounded price: {price:F2}"); // Output: Rounded price: 123.46

// Percentage
Console.WriteLine($"Percentage: {0.75:P}"); // Output: Percentage: 75.00%

// Date formatting
Console.WriteLine($"Date: {now:d}"); // Output: Date: 5/22/2023 (depends on culture)
Console.WriteLine($"Time: {now:t}"); // Output: Time: 10:30 AM (depends on culture)
Console.WriteLine($"Custom: {now:yyyy-MM-dd}"); // Output: Custom: 2023-05-22

Basic Input Operations

Console.Read

The Console.Read() method reads a single character from the console and returns its ASCII value as an integer:

csharp
Console.WriteLine("Press any key:");
int asciiValue = Console.Read();
Console.WriteLine($"ASCII value: {asciiValue}");
Console.WriteLine($"Character: {(char)asciiValue}");

Console.ReadLine

The Console.ReadLine() method reads a line of text (until the user presses Enter) from the console:

csharp
Console.Write("Enter your name: ");
string name = Console.ReadLine();
Console.WriteLine($"Hello, {name}!");

Console.ReadKey

The Console.ReadKey() method reads a single key press from the console without displaying it:

csharp
Console.WriteLine("Press any key to continue...");
ConsoleKeyInfo key = Console.ReadKey();
Console.WriteLine($"\nYou pressed: {key.KeyChar}");

Converting User Input

Since Console.ReadLine() always returns a string, you'll often need to convert this input to other data types:

csharp
// Converting to integer
Console.Write("Enter your age: ");
int age = int.Parse(Console.ReadLine());
Console.WriteLine($"Next year, you'll be {age + 1} years old.");

// Converting to double
Console.Write("Enter a price: ");
double price = double.Parse(Console.ReadLine());
Console.WriteLine($"Price with tax: {price * 1.08:C}");

Safe Conversion with TryParse

To handle potential input errors, use TryParse() methods:

csharp
Console.Write("Enter a number: ");
string input = Console.ReadLine();

if (int.TryParse(input, out int number))
{
Console.WriteLine($"Double of your number is: {number * 2}");
}
else
{
Console.WriteLine("Invalid input! Please enter a valid number.");
}

Practical Example: Simple Calculator

Let's combine input and output operations to create a simple calculator:

csharp
Console.WriteLine("Simple Calculator");
Console.WriteLine("----------------");

// Get first number
Console.Write("Enter first number: ");
if (!double.TryParse(Console.ReadLine(), out double num1))
{
Console.WriteLine("Invalid input for first number!");
return;
}

// Get operation
Console.Write("Enter operation (+, -, *, /): ");
string operation = Console.ReadLine();

// Get second number
Console.Write("Enter second number: ");
if (!double.TryParse(Console.ReadLine(), out double num2))
{
Console.WriteLine("Invalid input for second number!");
return;
}

// Calculate and display result
double result = 0;
bool validOperation = true;

switch (operation)
{
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
if (num2 != 0)
{
result = num1 / num2;
}
else
{
Console.WriteLine("Error: Division by zero is not allowed!");
validOperation = false;
}
break;
default:
Console.WriteLine("Error: Invalid operation!");
validOperation = false;
break;
}

if (validOperation)
{
Console.WriteLine($"Result: {num1} {operation} {num2} = {result}");
}

Changing Console Appearance

You can customize the appearance of your console application:

csharp
// Change text color
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("This text is green!");

// Change background color
Console.BackgroundColor = ConsoleColor.Yellow;
Console.ForegroundColor = ConsoleColor.Black;
Console.WriteLine("Black text on yellow background!");

// Reset colors
Console.ResetColor();
Console.WriteLine("Back to default colors.");

// Clear the console
Console.Clear();

File Input and Output Basics

While the Console class handles I/O for the console window, C# also provides classes for file operations:

csharp
// Writing to a file
string[] lines = { "First line", "Second line", "Third line" };
File.WriteAllLines("sample.txt", lines);
Console.WriteLine("Data written to file successfully!");

// Reading from a file
if (File.Exists("sample.txt"))
{
string[] readLines = File.ReadAllLines("sample.txt");
Console.WriteLine("File contents:");
foreach (string line in readLines)
{
Console.WriteLine(line);
}
}

Summary

Input and output operations are fundamental in C# programming, especially for console applications:

  • Output methods: Console.Write() and Console.WriteLine()
  • Input methods: Console.Read(), Console.ReadLine(), and Console.ReadKey()
  • Converting input: Parse() and TryParse() methods
  • String formatting using string interpolation ($"...") and format specifiers
  • Basic file I/O using the File class

By mastering these techniques, you can create interactive console applications that effectively communicate with users.

Additional Resources

Exercises

  1. Create a program that asks for a user's name, age, and favorite color, then displays a personalized message.
  2. Build a temperature converter that converts between Celsius and Fahrenheit.
  3. Create a simple address book program that allows users to add, view, and search for contacts (store data in memory).
  4. Extend the calculator example to handle more operations and include error handling.
  5. Write a program that reads a text file, counts the number of words, and displays the result.


If you spot any mistakes on this website, please let me know at [email protected]. I’d greatly appreciate your feedback! :)