BCA Sem 1 | Unit 3 | Computer Concepts & C Programming
Overview of conio.h Header File in C — BKNMU Junagadh
Console I/O Functions, Clearing Screen, Unbuffered Input, Cursor Control, and Non-Standard Mechanics
conio.h header file stands for Console Input Output Header. It is a legacy C header file, primarily used in older MS-DOS compilers like Turbo C/C++, that contains declarations for functions required to perform non-standard console manipulation operations like clearing the screen, positioning the cursor, and reading instant keypresses without buffering.
The conio.h library is widely known for four main types of console interaction routines:
1. Screen Manipulation
Used to clear the console output screen completely and reposition the cursor back to the top-left origin (1,1).
2. Unbuffered Input
Reads a single character instantly from the keyboard without waiting for the user to press the Enter key.
3. Cursor Positioning
Allows positioning the output terminal cursor at specific column (X) and row (Y) coordinates for custom screen layouts.
4. Legacy Text Styling
Functions used to modify foreground text colors or background colors in supported MS-DOS console environments.
Here is a detailed breakdown of the primary functions supplied by the conio.h library:
| Function Name | Functional Description | Standard Parameters / Return Value |
|---|---|---|
clrscr() | Clears the console output screen and positions the cursor at coordinate (1,1). | Takes no parameters. Returns nothing (void). |
getch() | Reads a single character instantly without echoing (showing) the character on screen. | Takes no parameters. Returns the ASCII value as an integer. |
getche() | Reads a single character instantly AND ECHOES (shows) the character on screen. | Takes no parameters. Returns the ASCII value as an integer. |
gotoxy() | Moves the cursor to the specified column (X) and row (Y) position on the console grid. | X (column), Y (row) integers. Returns nothing (void). |
kbhit() | Checks if a key has been pressed on the keyboard without pausing program execution. | Takes no parameters. Returns non-zero (True) if key hit; otherwise 0. |
conio.h, you must include the header file at the very top using the #include <conio.h> preprocessor directive. Note that this is NOT part of the Standard C Library (ANSI C).
1. Using clrscr() and getch() in Turbo C:
#include <stdio.h>
#include <conio.h> // Required for clrscr and getch
int main() {
clrscr(); // Wipes previous screen output
printf("Hello, BCA Student!\n");
printf("Press any key to exit...");
getch(); // Holds screen output until a key is pressed
return 0;
}
2. Difference Between getch() and getche():
#include <stdio.h>
#include <conio.h>
int main() {
char ch1, ch2;
printf("Enter secret char (getch - hidden): ");
ch1 = getch(); // Reads key press without echoing
printf("\nEnter visible char (getche - shown): ");
ch2 = getche(); // Reads key press and shows it
return 0;
}
Step 1: Header Inclusion
The preprocessor loads declarations from conio.h when compiling with MS-DOS target compilers.
Step 2: Direct Hardware/BIOS Interruption
Functions like getch() interact directly with video memory and keyboard BIOS interrupts rather than standard I/O buffers.
Step 3: Instant Execution
User keypresses are returned instantly to the application without waiting for newline (\n) inputs.
getch() at the End of Main? In classic Turbo C, the output window closes instantly after program completion. BCA students traditionally call getch() at the end of main() to pause the console so they can view their program results.
conio.h is a non-standard, MS-DOS-specific header file. Modern GCC, Clang, and MSVC compilers (used in VS Code, Code::Blocks, or Linux) do NOT support conio.h. In GCC environments, standard alternatives or system calls (e.g., getchar()) should be used.
- Full Header Name: Console Input Output Header (
conio.h). - Header Type: Non-standard / Legacy header file (specific to Turbo C / MS-DOS).
- Primary Functions:
clrscr(),getch(),getche(),gotoxy(),kbhit(). - Unbuffered Keypress:
getch()reads keys instantly without waiting for Enter key. - Echo Distinction:
getch()hides the typed key;getche()echoes the typed key on screen.