Advertisement
Guest User

Untitled

a guest
Nov 20th, 2019
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* Коды клавиш */
  2. #define ESCAPE (27)
  3. #define BACKSPACE (8)
  4. #define ENTER (13)
  5.  
  6. #define BUFFER_LENGTH (256) /* длина буфера ввода */
  7. static char __buffer[BUFFER_LENGTH]; /* буфер ввода */
  8.  
  9. /* Функция для ограничения ввода */
  10. unsigned input(const char* const use, const char* const printAfter)
  11. {
  12.     int _tmp;
  13.     unsigned i = 0;
  14.    
  15.     if (!use)
  16.         return 0;
  17.  
  18.     while (i < BUFFER_LENGTH)
  19.     {
  20.         _tmp = getch();
  21.         if (_tmp == ENTER)
  22.         {
  23.             __buffer[i] = '\0';
  24.             break;
  25.         }
  26.         else if (_tmp == BACKSPACE && i > 0)
  27.         {
  28.             printf("\b \b");
  29.             --i;
  30.         }
  31.         else if (_tmp == ESCAPE)
  32.         {
  33.             exit(0);
  34.         }
  35.         else if (_tmp == 0) /* Если нажата специальная клавиша */
  36.         {
  37.             continue;
  38.         }
  39.         else if (strchr(use, _tmp))
  40.         {
  41.             __buffer[i++] = _tmp;
  42.             putchar(_tmp);
  43.         }
  44.     }
  45.  
  46.     if (printAfter)
  47.     {
  48.         printf(printAfter);
  49.     }
  50.  
  51.     return i;
  52. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement