Клавіатурне введення

клавіатурне

У четвертому виданні популярного керівництва надано основи програмування в операційній системі Linux. Розглянуті: використання бібліотек C/C++ та стандартних засобів розробки, організація системних викликів, файлове введення/виведення, взаємодія процесів, програмування засобами командної оболонки, створення графічних інтерфейсів за допомогою інструментальних засобів GTK+ або Qt, застосування сокетів та ін. Описана компіляція програм, їх компонування з бібліотеками та робота з термінальним введенням/виводом. Наведено прийоми написання додатків у середовищах GNOME® та KDE®, зберігання даних з використанням СУБД MySQL® та налагодження програм. Книга добре структурована, що робить навчання легким та швидким.

Для Linux-програмістів-початківців

Основи програмування в Linux

Клавіатурне введення

Розділи на цій сторінці:

Читання з клавіатури – дуже проста операція. До основних функцій читання належать такі:

#includeint getch(void);int getstr(char *string);int getnstr(char *string, int number_of_characters);int scanw(char *format, . );

Всі вони діють подібно до своїх аналогів, що не входять до бібліотеки curses, getchar, gets і scanf. Зверніть увагу на те, що у функції getstr немає можливості обмежити довжину рядка, що повертається, тому застосовувати її слід з великою обережністю. Якщо ваша версія бібліотеки curses підтримує функцію getnstr , що дозволяє обмежити кількість символів, що зчитуються, завжди застосовуйте її замість функції getstr . Це дуже нагадує поведінку функцій gets і fgets , з якими ви познайомилися в главі 3. .

У вправі 6.3 для демонстрації управління клавіатурою наведено приклад короткої програмиipmode.c.

Вправа 6.3. Режим клавіатури та введення

1. Наберіть програму та увімкніть у неї початкові виклики бібліотеки curses:

#include #include #include #include #define PW_LEN 256 #define NAME_LEN 256 int main() char name[NAME_LEN]; char password[PW_LEN]; const char * real_password = "xyzzy"; int i = 0; initscr(); move(5, 10); printw("%s", "Please login:"); move(7, 10); printw("%s", "User name: "); getstr(name); move(9, 10); printw("%s", "Password: "); refresh();

2. Коли користувач вводить пароль, необхідно зупинити відображення символів на екрані. Далі порівняйте введений пароль з рядком xyzzy:

cbreak(); noecho(); memset(password, '', sizeof(password)); while (i

3. На закінчення відновіть відображення символів та виведіть повідомлення про успішне або невдале завершення:

echo(); nocbreak(); move(11, 10); if (strncmp(real_password, password, strlen(real_password)) == 0) printw("%s", "Correct"); else printw("%s", "Wrong"); printw("%s", "password"); refresh(); sleep(2); endwin(); exit(EXIT_SUCCESS); >