Аналог 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);
Объяснение кода листинга программы
- Объявлены две переменные типа char: login и password. Каждая из них может хранить строку длиной не более 5 символов.
- В первую переменную, login, считывается строка, состоящая не более чем из 4 символов. Для этого используется функция scanf с форматирующим спецификатором
%4s
, который указывает на считывание строки, состоящей из 4 символов. - С помощью функции fflush(stdin) происходит очистка буфера ввода, что позволяет удалить из него остатки предыдущей строки.
- Во вторую переменную, password, также считывается строка, состоящая не более чем из 4 символов.
- Снова происходит очистка буфера ввода.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д