funktionsn00b



  • yo Hi,

    ich hoffe das mir jemand bei meinem Problem helfen kann, falls das Thema schonmal war bitte ich jetzt schon um Entschuldigung.

    Momentan initialisiere ich einen Font so:
    init(const char *filename); => init("pfad\\font.ttf");

    Das muss ich sehr sehr oft machen und wollte gerne eine Hilfsfunktion schaffen.
    => init(GetFontName(2));

    Er soll also in der Funktion GetFontName für den Eintrag 2 den String für den Font zurückgeben.

    Bin jedoch noch dummer Anfänger und bekomme es nicht hin 😞 _wills_ aber 🤡

    Quelltext hier erst geschrieben .. eventuell Syntaxfehler sind nicht Absicht.

    init(GetFontName(2));
    
    char GetFontName(int num)
    {
    char font[256];
    switch (num)
    {
    case 1: strcpy(font,"font1");break;
    case 2: strcpy(font,"font2");break;
    default:break;
    }
    return font;
    }
    

    oder man übergibt gleich eine char-Variable mit

    char font[256];
    init(GetFontName(2,&font));
    
    void GetFontName(int num, char *font)
    {
    switch (num)
    {
    case 1: strcpy(font,"font1");break;
    case 2: strcpy(font,"font2");break;
    default:break;
    }
    }
    

    Ich hoffe das kam albwegs verständlich rüber. 😕
    Kann mir bitte wer die Richtige und Syntaxtechnische korrekte Funktion leifern?
    Bei mir kommen immer diverse Umwandlungsfehler oder Typen Unstimmigkeiten.

    mfg
    Thomas



  • wie waere es mit:

    char GetFontName(int num) 
    { 
    switch (num) 
    { 
    case 1: return "font1";
    case 2: return "font2"; 
    default: return NULL; 
    } 
    }
    

    wobei ich num dann zu einem enum machen wuerde



  • Warum nicht etwa so?

    inline const char* GetFontName(int fontnumber)
    {
      static const char * const fontnames[] = { "font1", "font2" };
      return fontnames[i];
    }
    

    (Klappt natürlich nur so einfach, wenn die Font-Nummern dicht liegen, sonst müsste man irgendwie hashen.)



  • Wozu erst den Umweg über enum?

    typedef const char* Font;
    
    Font fontBla = "fonts/bla.ttf";
    


  • @Bashar
    Wofür ist eigentlich das zweite const nach dem *?

    PS: So hätte meine Lösung auch ausgesehen.



  • AJ:Optimierungshilfe. KA ob's was nützt.


Anmelden zum Antworten