Функция scanf(), не считывает данные - C (СИ)
Формулировка задачи:
Вот перед вами кусок кода, это функция которая возвращает true или false
проблема в том, что при запуске 2ой функции, первый шаг в функции ask() считаеться не верным, как бы перескакивает scanf() и в итоге нет подходящего значения в switch() тем самым отображается оповещение что нет такого значение. Либо так как мне нужно 2 раза вызвать эту функцию, считываеться только вторая, я не могу понять почему так происходит. Я пробовал добавить ещё один scanf(), пашет, т.е только для 1 ого метода, а просто так уже использовать, нет, будет 2 запроса) Обьясните )
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; } }
Решение задачи: «Функция scanf(), не считывает данные»
textual
Листинг программы
char * str = (char *)malloc(sizeof(char));//начальное выделение под 1 символ str = (char *)realloc((void *)str,NewCharCount*sizeof(char));//Изменяем память по NewCharCount символов
Объяснение кода листинга программы
- Объявлена переменная типа char* с именем
str
, которая изначально указывает на блок памяти размером 1 символ. - Выполняется операция приведения типа
(char *)malloc(sizeof(char))
, в результате которой выделяется память под 1 символ. - Выполняется операция приведения типа
(char *)realloc((void *)str,NewCharCount*sizeof(char))
, в результате которой изменяется размер блока памяти, начиная с указателяstr
, на NewCharCount символов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д