Разобраться с 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;
}

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

  1. Указываем язык программирования — C.
  2. Задаем задачу — разобраться с функцией getchar.
  3. Объявляем переменные: — char k, u; — int key[5] = { 0 }, b = 0;
  4. Входим в цикл while, который выполняется до тех пор, пока символ, считанный функцией getchar(), не будет равен 'r' или 'o'.
  5. Выводим сообщение с предложением выбрать тип ключа.
  6. Считываем символ, который является либо 'o', либо не является 'o' или 'r'.
  7. Если считанный символ равен 'o', то выполняем следующие действия: — Выводим сообщение с просьбой ввести ключ. — Входим в цикл while, который считывает символы и добавляет их в массив key до тех пор, пока не будет достигнут конец файла (EOF).
  8. Добавляем символ '\0' в конец массива key.
  9. Повторяем шаги с 4 по 8, пока не будет считан символ 'r'.
  10. Завершаем программу возвратом 0 из функции main.

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


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

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

12   голосов , оценка 3.917 из 5
Похожие ответы