14

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?
dbush
  • 205,898
  • 23
  • 218
  • 273

2 Answers2

27

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.

dbush
  • 205,898
  • 23
  • 218
  • 273
  • 3
    `` is supported by [MSVC](https://learn.microsoft.com/en-us/cpp/c-runtime-library/console-and-port-i-o?view=vs-2019). 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`). – 1201ProgramAlarm Jan 19 '20 at 19:28
4

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.

eerorika
  • 232,697
  • 12
  • 197
  • 326