ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ, ΡΡΠΎ Π·Π°Π½ΠΎΠ²ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½ΡΡ ΠΊΠΎΠΌΠΏΠ°ΠΊΡ-Π΄ΠΈΡΠΊΠΎΠ² Π½Π΅ ΡΠ²ΠΈΠ΄ΠΈΡ ΡΠ²Π΅Ρ Π΄ΠΎ ΠΊΠΎΠ½ΡΠ° Π³Π»Π°Π²Ρ 7, Π΅Π³ΠΎ ΠΎΡΠ½ΠΎΠ²Ρ Π²Ρ Π·Π°Π»ΠΎΠΆΠΈΡΠ΅ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅. ΠΠ»Π°Π²Π° 6 ΠΏΠΎΡΠ²ΡΡΠ΅Π½Π° curses, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ Π²ΠΎΠ²ΡΠ΅ Π½Π΅ Π΄ΡΠ΅Π²Π½Π΅Π΅ ΠΏΡΠΎΠΊΠ»ΡΡΠΈΠ΅, Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΡ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΏΡΠ΅Π΄Π»Π°Π³Π°ΡΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΠΊΠΎΠ΄ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ Π½Π° ΡΠΊΡΠ°Π½Π΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°. ΠΠΎΠΏΡΡΠ½ΠΎ Π²Ρ ΡΠ·Π½Π°Π΅ΡΠ΅ ΡΡΡΡ Π±ΠΎΠ»ΡΡΠ΅ ΠΎ ΡΠ°Π·ΠΌΡΡΠ»Π΅Π½ΠΈΡΡ ΠΏΡΠ΅ΠΆΠ½ΠΈΡ ΠΏΡΠΎΡΠΈ UNIX, ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ²ΡΠΈΡΡ Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌ Linux ΠΈ UNIX ΠΈ ΠΏΠΎΠ½ΡΡΠΈΠ΅ΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°. ΠΠΈΠ·ΠΊΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΉ Π΄ΠΎΡΡΡΠΏ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ Π² ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅, Π±ΡΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠΎ, ΡΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ½ΠΎ. ΠΠΎΠ»ΡΡΠ°Ρ ΡΠ°ΡΡΡ ΡΠΎΠ³ΠΎ, ΠΎ ΡΠ΅ΠΌ ΠΌΡ ΠΏΠΈΡΠ΅ΠΌ Π·Π΄Π΅ΡΡ, Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΡ ΡΡ Π² ΠΎΠΊΠ½Π΅ ΠΊΠΎΠ½ΡΠΎΠ»ΠΈ, ΡΠ°ΠΊΠΈΡ ΠΊΠ°ΠΊ ΡΠΌΡΠ»ΡΡΠΎΡΡ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° KDE's Konsole, GNOME's gnome-terminal ΠΈΠ»ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ X11 xterm.
Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ Π²Ρ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΠ·Π½Π°Π΅ΡΠ΅ ΠΎ:
β‘ ΡΡΠ΅Π½ΠΈΠΈ Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° ΠΈ Π·Π°ΠΏΠΈΡΠΈ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»;
β‘ Π΄ΡΠ°ΠΉΠ²Π΅ΡΠ°Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° ΠΈ ΠΎΠ±ΡΠ΅ΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»ΡΠ½ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ΅ (General Terminal Interface, GTI);
β‘ ΡΡΡΡΠΊΡΡΡΠ΅ ΡΠΈΠΏΠ°
termiosβ‘ Π²ΡΠ²ΠΎΠ΄Π΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° ΠΈ Π±Π°Π·Π΅ Π΄Π°Π½Π½ΡΡ
terminfoβ‘ ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ΠΈΠΈ Π½Π°ΠΆΠ°ΡΠΈΡ ΠΊΠ»Π°Π²ΠΈΡ.
Π§ΡΠ΅Π½ΠΈΠ΅ Ρ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° ΠΈ Π·Π°ΠΏΠΈΡΡ Π½Π° ΡΠ΅ΡΠΌΠΈΠ½Π°Π»
Π Π³Π»Π°Π²Π΅ 3 Π²Ρ ΡΠ·Π½Π°Π»ΠΈ, ΡΡΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΈΠ· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠ° ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅Ρ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΠ΅ ΠΊ Π½Π΅ΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π²Π²ΠΎΠ΄Π° ΠΈ Π²ΡΠ²ΠΎΠ΄Π°. ΠΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ ΠΏΡΠΎΡΡΡΠΌ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ
getcharprintfΠ ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠΈ 5.1 Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ menu1.c Π²Ρ ΠΏΠΎΠΏΡΡΠ°Π΅ΡΠ΅ΡΡ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ΅Π½Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΠ΅ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ.
1.Β ΠΠ°ΡΠ½ΠΈΡΠ΅ ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΡΡΠΎΠΊ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ², ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ ΠΌΠ΅Π½Ρ, ΠΈ ΠΏΡΠΎΡΠΎΡΠΈΠΏ (ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅) ΡΡΠ½ΠΊΡΠΈΠΈ
getchoice#include <stdio.h>#include <stdlib.h>char *menu[] = {Β "a β add new record", "d β delete record", "q - quit", NULL,};int getchoice(char *greet, char *choices[]);2.Β Π€ΡΠ½ΠΊΡΠΈΡ
maingetchoicemenuint main() {Β int choice = 0;Β do {Β choice = getchoice("Please select an action", menu);Β Β printf("You have chosen: %c\n", choice);Β } while (choice != 'q');Β exit(0);}3.Β Π’Π΅ΠΏΠ΅ΡΡ Π²Π°ΠΆΠ½ΡΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΊΠΎΠ΄Π° β ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½ ΠΌΠ΅Π½Ρ ΠΈ ΡΡΠΈΡΡΠ²Π°Π΅Ρ Π²Π²ΠΎΠ΄ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ:
int getchoice(char *greet, char *choices[]) {Β int chosen = 0;Β int selected;Β char **option;Β do {Β Β printf("Choice: %s\n", greet);Β Β option = choices;Β Β while (*option) {Β Β printf("%s\n", *option);Β Β option++;Β }Β selected = getchar();Β Β option = choices;Β while (*option) {Β Β if (selected == *option[0]) {Β Β Β chosen = 1;Β Β Β break;Β Β }Β Β option++;Β }Β Β if (!chosen) {Β Β printf("Incorrect choice, select again\n");Β }Β } while (!chosen);Β return selected;}ΠΠ°ΠΊ ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
Π€ΡΠ½ΠΊΡΠΈΡ
getchoicegreetchoicesgetcharΠΠΎΠ³Π΄Π° Π²Ρ ΠΎΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΠ΅ ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΠ΅, ΡΡΠΎ ΠΎΠ½Π° Π²Π΅Π΄Π΅Ρ ΡΠ΅Π±Ρ Π½Π΅ ΡΠ°ΠΊ, ΠΊΠ°ΠΊ ΠΎΠΆΠΈΠ΄Π°Π»ΠΎΡΡ. ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π΄Π°Π»Π΅Π΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π΄ΠΈΠ°Π»ΠΎΠ³Π° Π½Π° ΡΠΊΡΠ°Π½Π΅ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π°.
$ <b>./menu1</b>Choice: Please select an actiona β add new recordd β delete recordq β quit<b>a</b>You have chosen: aChoice: Please select an actiona β add new recordd β delete recordq β quitIncorrect choice, select againChoice: Please select an actionΠ° β add new recordd β delete recordq β quit<b>q</b>You have chosen: q $ΠΠ»Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎΠ±Ρ ΡΠ΄Π΅Π»Π°ΡΡ Π²ΡΠ±ΠΎΡ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ»Π°Π²ΠΈΡΠΈ <Π>, <Enter>, <Q>, <Enter>. ΠΠ΄Π΅ΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ, ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, Π΄Π²Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ; ΡΠ°ΠΌΠ°Ρ ΡΠ΅ΡΡΠ΅Π·Π½Π°Ρ Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ Π²Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ "Incorrect choice" ("ΠΠ΅Π²Π΅ΡΠ½ΡΠΉ Π²ΡΠ±ΠΎΡ") ΠΏΠΎΡΠ»Π΅ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ±ΠΎΡΠ°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, Π²Ρ Π΅ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π½Π°ΠΆΠ°ΡΡ ΠΊΠ»Π°Π²ΠΈΡΡ <Enter> (ΠΈΠ»ΠΈ <Return>), ΠΏΡΠ΅ΠΆΠ΄Π΅ ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠΈΡΠ°Π΅Ρ Π²Π²Π΅Π΄Π΅Π½Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅.
Π‘ΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΈ Π½Π΅ΠΊΠ°Π½ΠΎΠ½ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ΅ΠΆΠΈΠΌΠΎΠ²
ΠΠ±Π΅ ΡΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ΅ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Ρ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²Π²ΠΎΠ΄ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π° Π½Π΅ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π΅ Π½Π°ΠΆΠΌΠ΅Ρ ΠΊΠ»Π°Π²ΠΈΡΡ <Enter> ΠΈΠ»ΠΈ <Return>. Π Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΡΡΠΎ Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ²ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ Π΄Π°Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΡΠΈΠ±ΠΊΠΈ Π½Π°Π±ΠΎΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠ»Π°Π²ΠΈΡ <Backspace> ΠΈΠ»ΠΈ <Delete>. Π’ΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΎΡΡΠ°Π΅ΡΡΡ Π΄ΠΎΠ²ΠΎΠ»Π΅Π½ ΡΠ²ΠΈΠ΄Π΅Π½Π½ΡΠΌ Π½Π° ΡΠΊΡΠ°Π½Π΅, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ ΠΊΠ»Π°Π²ΠΈΡΡ <Enter>, ΡΡΠΎΠ±Ρ Π²Π²ΠΎΠ΄ ΡΡΠ°Π» Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅.