Why use conio.h?
Asked Answered
R

2

17

I often see people use the header file of conio.h in C and C++, although I can´t see any major benefits in use of the functions inside of conio.h in comparison to the standard library functions. conio.h has furthermore the disadvantages of being dependent on the Windows/MS-DOS environment and not being part of the C standard.

  • What is the reason to choose functions of conio.h?
  • What do functions inside of conio.h provide, what the functions of the standard C libraries can't?
  • Why to choose the conio library?
Rivero answered 19/1, 2020 at 16:23 Comment(9)
conio means console I/O. So it is for console applications.Correia
@PaulOgilvie Don´t the standard libries provide input/output operations for console applications, too?Rivero
It has an easy way to get raw keyboard inputDisillusionize
Code can determine if data is in stdin now. Std C has no concept of time within stdin. stdin is just a sequence of bytes.Lori
There's no equivalent to, for example, kbhit in the standard C library.Protect
It never fails to amaze me how many people still use Turbo C++.Masterson
See the documentations? There are functions like kbhit in the standard library.Surfperch
@Ayxan -- which functions in the C Standard Library are like kbhit()?Bawl
@exnihilo I meant to say there are functions like kbhit that does what standard library can't. I just messed up the comment being sleepy, Sorry!Surfperch
B
30

The conio.h header is specific to Turbo C, which predates the earliest C standard by several years. It contains routines that are specific to the DOS command line. One function here that's frequently used is getch, which allows reading one character at a time without having to press the Enter key. It also contains gotoxy which allows placing the cursor at a specific location in the terminal

Generally speaking, methods of communicating with the terminal like this are very OS specific, so each has their own (typically non-portable) way of doing it.

This contrasts with the functions in stdio.h which contain functions like printf, scanf, and getchar which work regardless of what type of console is in use.

Balaton answered 19/1, 2020 at 16:33 Comment(1)
<conio.h> is supported by MSVC. The names of the declared functions have been updated in more recent versions to follow the Standard C rules for implementation-specific names by adding a leading underscore (e.g. _getch).Belicia
C
5

What is the reason to choose functions of conio.h?

It has functions that are not provided by the standard library, and people who choose it don't (know to) care about porting to other systems.

What do functions inside of conio.h provide, what the functions of the standard C libraries can´t?

These are some functions that don't have standard alternative. There may be others:

kbhit
clrscr
getch
getche

Standard library potentially could provide the functions. But it doesn't.

Why to choose the conio library?

Because you've been taught to use it, and you don't (know to) care about porting to other systems.

Carlin answered 19/1, 2020 at 16:37 Comment(4)
A modern replacement might be ncurses.Xanthine
@JesperJuhl Does ncurses support windows though? PDCurses is a curses port that supports windows.Carlin
Another replacement may be to use a windowing or graphics framework.Cassycast
Qt can also replace some of the functionality some of the time while being cross-platform.Surfperch

© 2022 - 2024 — McMap. All rights reserved.