Считывание строки с пробелами - C (СИ)

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

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

Пишу небольшую эмуляцию БД. Пользователь вводит с клавиатуры название и тип товара цену колво наличие. Для ввода строк использую
char name[100];gets_s(name,99);
Ввод производится функцией inputElem. При первом вызове всё работает отлично, но при повторном вызове почему то пропускает ввод первой строки name и стразу запрашивает ввод второй. При этом в name записывается пустая строка. В чем дело подскажите? Прикрепляю скрин и кусок кода
void inputElem(char* name, char* type, int* count, float* price, bool* isinshop){
    printf("Введите название товара - ");
    fflush(stdin);
    gets_s(name, 99);
    printf("Введите тип товара - ");
    fflush(stdin);
    gets_s(type, 49);
    printf("Введите колво товара - ");
    scanf("%i", count);
    printf("Введите цену товара - ");
    scanf("%f", price);
    int tmp;
    printf("Введите наличие товара(0-нет,1-есть) - ");
    scanf("%i", &tmp);
    if (tmp == 0)
        *isinshop = false;
    else
        *isinshop = true;
 
int main()
{
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    product *head = NULL;
    
    char name_tmp[100];
    char type_tmp[50];
    int count_tmp;
    float price_tmp;
    bool isinshop_tmp;
 
    inputElem(name_tmp, type_tmp, &count_tmp, &price_tmp, &isinshop_tmp);
    head = addElem(head,name_tmp, type_tmp, count_tmp, isinshop_tmp, price_tmp);
    inputElem(name_tmp, type_tmp, &count_tmp, &price_tmp, &isinshop_tmp);
    addElem(head, name_tmp, type_tmp, count_tmp, isinshop_tmp, price_tmp);
    inputElem(name_tmp, type_tmp, &count_tmp, &price_tmp, &isinshop_tmp);
    addElem(head, name_tmp, type_tmp, count_tmp, isinshop_tmp, price_tmp);
    printProduct(head);
    printf("===========================================\n");
}

Решение задачи: «Считывание строки с пробелами»

textual
Листинг программы
fgets(name,99,stdin)

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

  1. Вводится строка name в память компьютера
  2. Размер строки name составляет 99 символов
  3. Источник данных для чтения строки - стандартный ввод stdin
  4. Используется функция fgets для считывания строки
  5. После считывания строки, она сохраняется в переменной name

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


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

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

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