Аналог cin.getline() на Си - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Нужен аналог функции cin.getline( ). Если существует, то поведайте мне о нём, если нет, то подскажите как написать.

Никакого С++, только чистый С. Нельзя использовать ООП и потоки.

Я пытался что-то написать, но в итоге, если пользователь ввеёдт неправильный символ и захочет его удалить, то не сможет. getch( ) обрабатывает Backspace как сигнал, а не как кнопку удаления символа. Вот ко:
void input_login_or_password( char **array_symbols, int max_symbol  )
 {
    char help_element; 
    int i;
 
    for( i = 0; i < max_symbol; i++ )                       // 13 - Enter, 32 - Space, 8 - Backspace;
     {
       help_element = getch( );
 
       if( help_element == 13 )
        break;
    
       ( *array_symbols )[ i ] = help_element;
                      
       printf( "%c", help_element );
         
     }
                
     ( *array_symbols )[ i ] = '\0';
 
 }

Решение задачи: «Аналог cin.getline() на Си»

textual
Листинг программы
char login[ 5 ];
char password[ 5 ];
 
scanf( "%4s", login );
fflush(stdin);
 
scanf( "%4s", password );
fflush(stdin);

Объяснение кода листинга программы

  1. Объявлены две переменные типа char: login и password. Каждая из них может хранить строку длиной не более 5 символов.
  2. В первую переменную, login, считывается строка, состоящая не более чем из 4 символов. Для этого используется функция scanf с форматирующим спецификатором %4s, который указывает на считывание строки, состоящей из 4 символов.
  3. С помощью функции fflush(stdin) происходит очистка буфера ввода, что позволяет удалить из него остатки предыдущей строки.
  4. Во вторую переменную, password, также считывается строка, состоящая не более чем из 4 символов.
  5. Снова происходит очистка буфера ввода.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.769 из 5