Функция scanf(), не считывает данные - C (СИ)

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

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

Вот перед вами кусок кода, это функция которая возвращает true или false
bool ask(char *text)
{
    char choice;
    while(1)
    {
        printf("\n>  %s? : ", text);
        scanf("%c", &choice);
        switch(toupper(choice))
        {
        case 'Y':
            return true;
        case 'N':
            return false;
        default:
            printf("\n>  Please choose only Y or N\n");
            break;
        }
    }
}
 
она используеться в другой функции
 
while(1)
{
    printf("\n<  Choice : ");
    scanf("%c", &choice);
    switch(choice)
    {
    case '1': new_item(i, "item", 0, 5.0, ask("smth"), ask("smth")); break;
    case '9': break;
    default: printf("\n>  Wrong option\n"); break;
    }
}
проблема в том, что при запуске 2ой функции, первый шаг в функции ask() считаеться не верным, как бы перескакивает scanf() и в итоге нет подходящего значения в switch() тем самым отображается оповещение что нет такого значение. Либо так как мне нужно 2 раза вызвать эту функцию, считываеться только вторая, я не могу понять почему так происходит. Я пробовал добавить ещё один scanf(), пашет, т.е только для 1 ого метода, а просто так уже использовать, нет, будет 2 запроса) Обьясните )

Решение задачи: «Функция scanf(), не считывает данные»

textual
Листинг программы
char * str = (char *)malloc(sizeof(char));//начальное выделение под 1 символ
str = (char *)realloc((void *)str,NewCharCount*sizeof(char));//Изменяем память по NewCharCount символов

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

  1. Объявлена переменная типа char* с именем str, которая изначально указывает на блок памяти размером 1 символ.
  2. Выполняется операция приведения типа (char *)malloc(sizeof(char)), в результате которой выделяется память под 1 символ.
  3. Выполняется операция приведения типа (char *)realloc((void *)str,NewCharCount*sizeof(char)), в результате которой изменяется размер блока памяти, начиная с указателя str, на NewCharCount символов.

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


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

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

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