printf mit eigenem Datentyp
-
Hallo,
ich habe folgendes Problem: Ich habe über enum einen eigenen
Datentyp definiert, und möchte den Inhalt einer Variable über
printf ausgeben, im folgenden der Beispielcode:typedef enum { alpha,beta,gamma } greek; greek getchar(char *input); #include <stdio.h> int main() { greek test = getchar("alpha"); printf() //? return 0; }
-
Was genau erwartest du für eine Ausgabe?
-
Eigener Datentyp, selber machen
char *greek_alphabet[] = { "alpha", "beta", "gamma", NULL}; ... printf("%s", greek_alphabet[test] );
Das Array kannst du auch gleich für die Eingabe nehmen. (
getchar
[c]ist allerdings schon vergeben).
-
Tja, in C geht das leider nicht.
-
printf funktioniert nur mit vordefinierten, festen Datentypen.
Wenn man berücksichtigt, dass enum-Elemente immer vom Typ int sind, dann kannst du sie als int an printf weiterreichen.
-
Es geht darum, dass ich wesentlich mehr Typen im enum-Feld benutze,
und der Inhalt einer "enum-Variable" ausgegeben werden soll. Über ein
char-Array würde dies nicht gehen, da ich im wesentlichen auch
noch andere Funktionen mit dem enum-Typ implementiert habe, die nicht
mit chars funktionieren.
-
Klar wird das Array größer. Na und.
Dieses Array dient auch nur zur Ausgabe, nicht zur Berechnung.
Wenn du Probleme mit einem globalen Array hast, dann kapsele dass mit einer Funktion:
char * enum2ptr(greek letter) { // hier fehlt noch die Fehlerbehandlung return greek_alphabet[letter]; } char * enum2str(,char *str, greek letter) { // hier fehlt noch die Fehlerbehandlung strcpy(str, greek_alphabet[letter]); return str; }