09
Сен
2021

Не считывается символ char

#include <stdio.h>
#include <stdlib.h>

#define MAX_WORD 10

struct Component{
    enum {isInt, isChar, isString} type;
    int num;
    char symbol;
    char string[MAX_WORD];
    void* val;

};

void push(struct Component *c){
    printf("which type will be pushed?\n1 - int\n2 - char\n3 - string\n");
    int temp;
    scanf("%d", &temp);
    switch(temp){
    case 1:
        c->type = isInt;
        int intValue;
        printf("Enter number\t");
        scanf("%d", &intValue);
        c->num = intValue;
    break;
    case 2:
        c->type = isChar;
        char charValue;
        printf("Enter char\t");
        scanf("%c", &charValue);
        c->symbol = charValue;
    break;
    case 3:
        c->type = isString;
    break;
    }
}

int main()
{
    int count;      // Сколько элементов будет в множестве?
    scanf("%d", &count);
    struct Component comp[count];
    for(int i = 0; i < count; i++){
        struct Component *ptr = &comp[i];
        push(ptr);
    }

    return 0;
}

когда вызываю функцию scanf() для символа scanf("%c", &charValue);, программа просто пропускает ввод символа, хотя с scanf("%d", &intValue); такой проблемы нет. Подскажите, что не так делаю?

Источник: https://ru.stackoverflow.com/questions/1326733/%D0%9D%D0%B5-%D1%81%D1%87%D0%B8%D1%82%D1%8B%D0%B2%D0%B0%D0%B5%D1%82%D1%81%D1%8F-%D1%81%D0%B8%D0%BC%D0%B2%D0%BE%D0%BB-char

Тебе может это понравится...

Добавить комментарий