Hilfe für Anfänger: const char in char umwandeln!



  • Hallo,
    ich habe folgenden Code:

    const char *player = GetPlayerName(playerid);
    const char *group = GetGroupName(playerid);
    

    GetPlayerName und GetGroupName geben den Namen und die Gruppe des Spielers als konstanten Char zurück. Leider werden die Namen immer als Kleinbuchstaben zurückgegeben, d.h. sollte der PlayerName 'Steffen Ist Cool' heißen, dann gibt GetPlayerName 'steffen ist cool' zurück.

    Ich möchte nun eine Prozedur schreiben, die den ersten Buchstaben, also player[0] auf toupper(player[0]) setzt. Das kann ich ja nicht machen, soweit komm ich klar, weil player eine Konstante ist. Also habe ich es folgendermaßen versucht:

    char *playername = NULL;
    int name_length = strlen (player);
    playername = new char[name_length];
    playername[0] = toupper (player[0]);
    for (int i = 1; i < name_length; i++) {
      playername[i] = tolower (player[i]);
    }
    

    Der Code funktioniert jedoch nur teilweise. Wenn ich den String auf meinem Bildschirm anzeigen lasse, werden manchmal am Ende komische Zeichen, wie $,% und so angezeigt.
    Wo ist mein Fehler?

    Desweiteren möchte ich eine Prozedur für den char group schreiben. Die Gruppennamen haben solche Namen wie 'Treck Main', 'Hell Of Fire', 'Bunster'...
    GetGroupName würde dann z.B. 'treck main' zurückgeben.
    Ich möchte aber nur den letzten Teil des Namens (also der letzte Teil, der durch ein ' ' getrennt wird, sofern vorhanden).

    Aus 'treck main' soll also 'Main' werden, aus 'hell of fire' -> 'Fire' und aus 'Bunster' -> 'Bunster'

    Kann mir da jemand helfen? Ich check einfach nicht durch und habe gedacht, mein obiger Code wäre richtig - ist er aber leider nicht 😞

    Vielen Dank für Eure Hilfe

    Ricky



  • strings werden mit einem 0 Zeichen beendet. Und genau das vergisst du in den neuen String zu schreiben.



  • Wenn du dann einen neuen string angelegt hast der lang genug ist (0) dann kannst du auch die Funktion strcpy nutzen.



  • Wenn du eine "const char*"-Variable hast die du , aus welchen (vernünftigen ?!) Gründen auch immer, ändern musst, dann kannt du die "Konstanstheit" mittels const-cast entfernen.

    const char* p;
    ...
    char* temp = const_cast<char*>(p);
    temp[0] = ...;
    

    mfg JJ



  • *lol*

    Was soll das. Das ist hier quatsch.

    @ricky: Nur so am Rande: Zeiger auf char ist was anderes als char, das nur, Falls du nochmal eine Frage stellen willst.


Anmelden zum Antworten