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;
    }
    

Anmelden zum Antworten