2012-01-09 48 views
43

Possible Duplicate:
How to implement getch() function of C in Linux?Tại sao tôi không thể tìm thấy <conio.h> trên Linux?

Tôi đã tìm kiếm một phiên bản Linux của tập tin conio.h Header, nhưng đã không tìm thấy bất kỳ ...

Tôi đang sử dụng gcc và Text-Editor Geany để biên dịch C của tôi Mã.

Có cách nào để thay thế các chức năng của nó không? Ví dụ, getch()

cảm ơn

+11

Bạn không thể tìm thấy nó bởi vì nó là một tiêu đề DOS! –

Trả lời

64

conio.h là một tệp tiêu đề C được sử dụng trong trình biên dịch MS-DOS cũ để tạo giao diện người dùng văn bản. Các trình biên dịch nhắm vào các hệ điều hành không phải DOS, như Linux, Win32 và OS/2, cung cấp các triển khai khác nhau của các hàm này.

Các #include <curses.h> sẽ cung cấp cho bạn hầu như tất cả các chức năng mà được cung cấp trong conio.h

nucurses cần phải được lắp đặt tại địa điểm đầu tiên

Trong distro deb dựa sử dụng

sudo apt-get install libncurses5-dev libncursesw5-dev

Và trong bản phân phối dựa trên rpm sử dụng

sudo yum install ncurses-devel ncurses

Đối getch() lớp chức năng, bạn có thể thử this

+7

Tôi gặp lỗi 'lỗi nghiêm trọng: curses.h: Không có tệp hoặc thư mục nào' tôi nên làm gì? – sumitkanoje

+2

@kanojesumit Điều đó có nghĩa là thư viện curses chưa được cài đặt. Nó không phải là một thư viện chuẩn. Bạn sẽ cần phải tìm thấy nó trực tuyến (ví dụ Ncurses là một thực hiện GPL miễn phí). – oligofren

+0

Các chương trình sử dụng 'curses' hoặc' ncurses' thường chiếm toàn bộ màn hình (văn bản), có thể hoặc không thể là những gì bạn muốn. –

4

Một thư viện Linux phổ biến trong đó có chức năng tương tự sẽ ncurses.

19

Bản gốc conio.h được thực hiện bởi Borland, do đó, nó không phải là một phần của Thư viện chuẩn C và cũng không được xác định bởi POSIX.

But here is an implementation for Linux sử dụng ncurses để thực hiện công việc.

2

Đó là vì không tồn tại, vì nó bị ràng buộc với Windows.

Sử dụng các chức năng tiêu chuẩn từ <stdio.h> thay vào đó, chẳng hạn như getc

Các ncurses đề nghị thư viện là tốt nếu bạn muốn viết GUI giao diện điều khiển dựa trên, nhưng tôi không nghĩ rằng đó là những gì bạn muốn.

Các vấn đề liên quan