Разобраться с getchar - C (СИ)
Формулировка задачи:
Добрый день, у меня в этой функции действие одного getchar залезает на действие другого. Код ниже. В первом гетчар мы получаем 2 символа 'o' и '\n'. И потом идет проверка на '\n' и мы не попадаем во второй цикл. Как решить такую проблему? Может что то вместо гетчар использовать? Заранее спасибо.
char k = 'a'; while (k != 'r' || k != 'o') { printf("\nDo you want random or your own key? Press r or o:\n"); k = getchar(); //тут мы получается получаем 2 символа 'o' и '\n' if (k == 'o') //здесь срабатывает 'o' { puts("\nVvedite key."); char u; int b = 0; while ((u = getchar()) != '\n') //здесь '\n' и мы не попадаем в этот цикл. key[b++] = u; key[b++] = '\0'; } }
Решение задачи: «Разобраться с getchar»
textual
Листинг программы
#include <stdio.h> int main( void ) { char k, u; int key[5] = { 0 }, b = 0; while ( k != 'r' && k != 'o' ) { printf("\nDo you want random or your own key? Press r or o:\n"); k = getchar(); //тут мы получается получаем 2 символа 'o' и '\n' if (k == 'o') //здесь срабатывает 'o' { puts("\nVvedite key."); while ((u = getchar()) != EOF ) // EOF = Ctrl + z (Win) or Ctrl + d ( Linux / Mac OS ) key[b++] = u; key[b++] = '\0'; } } return 0; }
Объяснение кода листинга программы
- Указываем язык программирования — C.
- Задаем задачу — разобраться с функцией getchar.
- Объявляем переменные: — char k, u; — int key[5] = { 0 }, b = 0;
- Входим в цикл while, который выполняется до тех пор, пока символ, считанный функцией getchar(), не будет равен 'r' или 'o'.
- Выводим сообщение с предложением выбрать тип ключа.
- Считываем символ, который является либо 'o', либо не является 'o' или 'r'.
- Если считанный символ равен 'o', то выполняем следующие действия: — Выводим сообщение с просьбой ввести ключ. — Входим в цикл while, который считывает символы и добавляет их в массив key до тех пор, пока не будет достигнут конец файла (EOF).
- Добавляем символ '\0' в конец массива key.
- Повторяем шаги с 4 по 8, пока не будет считан символ 'r'.
- Завершаем программу возвратом 0 из функции main.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д