Функция 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 символов.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д