Wyświetlanie wartości z trybu enum

0

Jak mogę wyświetlić wyraz z zawarty w trybie wyliczeniowym? W tym przypadku nazwa dnia tygodnia i mieiąca.

	enum dni_PL { poniedzialek, wtorek, sroda, czwartek, piatek, sobota, niedziela
	} dzien;

	enum miesiace_PL { styczen, luty, marzec, kwiecien, maj, czerwiec, lipiec, sierpien, wrzesien, pazdziernik, listopad, grudzien
	} miesiac;
	

Próbowałem tak:

printf("Dzis jest %s, 22 %s 2017 roku.", dni_PL(1), miesiace_PL(4));

ale kopilator wskazuje błędy:

  • Error: Id 1 returned exit status
  • cannot open output file
2

Nie ma w C standardowej metody zamiany enuma na string.

Możesz to ominąć definiując odpowiednią tablicę ręcznie:

char const* foo_names[] = {"foo", "bar", "baz"};
enum foo_enum { foo, bar, baz };

Wtedy byś wypisywał:

printf("%s\n", foo_names[foo]);
0

Czyli tak?

	char const* dni_PL[] = { "poniedzialek", "wtorek", "sroda", "czwartek", "piatek", "sobota", "niedziela"};

	enum dni_PL { poniedzialek, wtorek, sroda, czwartek, piatek, sobota, niedziela
	} dzien;
	char const* miesiace_PL[] = {"styczen", "luty", "marzec", "kwiecien", "maj", "czerwiec", "lipiec", "sierpien", "wrzesien", "pazdziernik", "listopad", "grudzien"};

	enum miesiace_PL { styczen, luty, marzec, kwiecien, maj, czerwiec, lipiec, sierpien, wrzesien, pazdziernik, listopad, grudzien
	} miesiac;
	
printf("Dzis jest %s, 22 %s 2017 roku.", dni_PL[poniedzialek], miesiace_PL[maj]);

Kompilator dalej wyświetla te same błędy.

0

Tak jest ok, tylko nie wiem po co definiujesz od razu globalne zmienne dzien i miesiac.

Błędy zgłaszane przez kompilator (a konkretniej przez linkera) oznaczają, że prawdopodobnie masz cały czas uruchomiony ten proces i nie może on nadpisać pliku .exe nową zawartością. Sprawdź w menadżerze zadań, czy nie ma działających procesów o tej nazwie i je ubij.

0

Dziękuję za pomoc, teraz działą poprawnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1