Как вывести константу в enum

У меня в enum хранятся следующие константы: Книга, Журнал, Газета, Блокнот. Мне нужно вывести Газета. Я написал так код

int main() {


    setlocale(LC_ALL, "Rus");
    enum print_edition {
        Книга, Журнал, Газета, Блокнот
    }direction;
    direction = Газета;
    if (direction = 2) {
        printf("Газета");
    }
    return 0;
} 

Но я хочу знать, можно ли вывести константу не через текст в двойных кавычках. То есть есть ли здесь что-то наподобие - написать direction[2] или print_edition[2] в printf и он выведет Газета?


Ответы (1 шт):

Автор решения: AlexGlebe

Вам прийдётся сделать массив ассоциативный. char const * assoc [ ] = { [Книга] = "Книга" , [Журнал] = "Журнал" , ... } и потом printf(assoc[direction]);

# include <stdio.h>
# include <locale.h>
int main() {
    setlocale(LC_ALL, "Rus");
    enum print_edition {
        Книга, Журнал, Газета, Блокнот
    }direction;
    char const * assoc [ ] = {
        [Книга] = "Книга" ,
        [Журнал] = "Журнал" ,
        [Газета] = "Газета" ,
        [Блокнот] = "Блокнот" } ;
    direction = Газета;
    puts(assoc[direction]);
}
→ Ссылка