C scanf не может правильно прочитать char после нескольких - PullRequest
0 голосов
/ 04 апреля 2019

Я мог бы пропустить что-то действительно важное, но я не могу понять, и мой учитель тоже не знает.Я читаю char (y / n) как ответ ввода с консоли, много раз, (я знаю о вещах "% c".) Мне удается читать как 3-4 "y" -s, но после этого происходит сбой, выглядиткак NULL, а затем прекрасно управляет остальными.

Функции: scanf для чтения консоли fprintf для записи в файл

Несмотря на то, что я пробовал много способов, каждый раз, когда одна из моих переменных не может содержатьнастоящий персонаж.Когда я печатаю элемент struct один за другим, он каждый раз выходит из строя.Когда я пытаюсь прочитать ту самую переменную структуры, она печатает испорченный ответ y.Я также включу код, я ввожу как: адрес: asdf (независимо от того, что на самом деле) размер: 0 остальные из них у, кроме самого последнего.Раньше я нажимал 2020.

Фактическое чтение:

    struct s_orders order;
    printf("Address: ");
    scanf(" %s", order.address);
    printf("Size of fields(m^2): ");
    scanf(" %d", &order.size);
    printf("Paint ordered?(y/n): ");
    scanf(" %c", &order.paint);
    printf("Revert ordered?(y/n): ");
    scanf(" %c", &order.revet);
    printf("Water-gas ordered?(y/n): ");
    scanf(" %c", &order.proba);
    printf("Kitchen creation ordered?(y/n): ");
    scanf(" %c", &order.uniq);
    printf("Uphol ordered?(y/n): ");
    scanf(" %c", &order.uphol);
    printf("Expiration date: ");
    scanf(" %s", order.date);

struct:

struct s_orders
{
    /* data */
    char address[100];
    int size;
    char paint;
    char revet;
    char proba;
    char water;
    char uniq;
    char uphol;
    char date[100];
};

Ожидаемый результат: "asdf; 0; y; y; y; y; y; y; y; 2020; "

Получено:" asdf; 0; y; y; y; (случайный символ здесь); y; y; 2020; "

Редактировать: - IЯ просто плохо фокусируюсь, я забыл попросить ввести переменную воды.Спасибо за помощь!

...