Problem mit Char



  • Hi Leute,

    char* Copy(char input[], int start, int count)
    {
          char *result = new char[count-1];
          for(int i = 0; i < count; i++)
          {
                result[i] = input[start+i];
          }
          result[sizeof(result)] = 0;
          return result;
    }
    

    Das ist eine selbstgeschrieben Funktion um aus einem Char-Array eine bestimmte Anzahl an Zeichen auszulesen. (Das gleiche wie die Pascal-Copy-Funktion.)

    Nun habe ich einen Char-Array, der z.B. ":[google]!dfjsdkfjl" enthält und ich möchte mittels dieser Copy-Funktion das 2 (da Array = 1) Zeichen bis zu dem "!" extrahieren (! Position = 9), dann müsste ich theoretisch ausgabe = Copy(arrayname, 1, 9); aufrufen, um das Ergebnis ("[google]") zu bekommen. (mit char *ausgabe = new char[9];)

    Aber ich erhalte immer nur die ersten 3 Zeichen...

    Irgendwas stimmt nicht, vielleicht könnt ihr mir helfen. 😉

    MfG, Refox



  • Das sagt mir, dass du keinen 64bit Compiler hast 😉
    Mit sizeof kann man nicht die Größe von Arrays die sich hinter Pointern verstecken ermitteln, erst recht nicht, da sizeof zur Compilezeit abgehandelt wird.

    Achja warum verwendest du nicht std::string?

    std::string a = ":[google]!dfjsdkfjl";
    std::string b = a.substr(1, 9);
    


  • Ich hab jetzt gemerkt, dass es wohl daran liegt, dass ich mit result[sizeof(result)] = 0; das letzte Zeichen entferne. Entferne ich das jedoch nicht, so gibt es ein komisches Zeichen an das Ende von der Variable result...



  • Wie Thomas schon geschrieben hat, liefert sizeof() nur zur Compilezeit etwas

    Richtig wäre:

    result[count] = '\0';
    

    Außerdem reservierst du 2 Zeichen zu wenig!
    Also statt

    char *result = new char[count-1];
    

    muß es heißen

    char *result = new char[count+1];
    

    um das Stringende '\0' mit aufnehmen zu können.



  • @Thomas: Vielen Dank schon mal für die schnelle Antwort.
    Aber irgendwie kann ich einen String nicht in der Console (mittels cout) anzeigen lassen, da meldet mein Compiler, dass der Operator << strings nicht zugewiesen ist...

    @Javaner: Einwandfrei, funzt perfekt. 😉 Danke!



  • Gewöhn dir doch mal an, zumindest die entsprechende Code-Zeile zu posten 😞


Log in to reply