Zmiana stringu na typ wyliczeniowy

0

Witam
Musze napisac program w C ktory zmienia string pobierany ze standardowego wejscia na typ wyliczeniowy enum. Jak to zrobic?

3

Najtrudniejsza rzecz, to wydobyć stringowe wartości enum'a, na co nie ma innych sposobów niż prepreocesor i użycie #
Potem "tylko" pętla, if itd...

Moze to pomoże

https://stackoverflow.com/questions/9907160/how-to-convert-enum-names-to-string-in-c

2

Opisz dokładnie co to ma robić i jaki jest tego kontekst.
Czy mając typ:

enum SomeEnum { V1, V2, V3 };

chcesz dostać wartości V1, V2, V3 po podaniu stosownego c-stringa, czy co dokładnie?

2

W C i C++ (może będzie od C++23) nie ma metadanych, więc konwersja "napis <-> wartość enum", jest dość pracochłonna.
Dlatego popieram stwierdzenie, by autor pytania lepiej opisał swoje zadanie (więcej szczegółów).

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

enum Color { red, blue, green };

struct { enum Color color; const char *text; } color_tb[]=
{
	{ red, "czerwony" },
	{ blue, "niebieski" },
	{ green, "zielony" }, 
};

enum Color to_Kolor(const char *text,enum Color def)
{
	int i;
	for(i=0;i<sizeof(color_tb)/sizeof(*color_tb);++i)
	{
		if(!strcmp(text,color_tb[i].text)) return color_tb[i].color;
	}
	return def;
}

const char *from_Kolor(enum Color color)
{
	int i;
	for(i=0;i<sizeof(color_tb)/sizeof(*color_tb);++i)
	{
		if(color==color_tb[i].color) return color_tb[i].text;
	}
	return "";
}

int main()
{
	return 0;
}

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