Problem beim bearbeiten von Strings

arget

Grünschnabel
Hallo, ich arbeite zurzeit an einer Client-Server anwendung, mit der ich Befehle von meinem Server an den Client schicken kann. Mein Client ist ein Robot auf dem ein Linux System lauft und der kann z.B.: laufen oder etwas sagen. Mein Problem ist nun, dass der Befehl "say: Hallo Welt" nicht richtig foramtiert wird. Der Roboter hat eine vorhandene Bibliothek mit der ich einen String übergeben kann aber vorher muss ich das "say:" wegschneiden. Ich habe mir eine Methode geschrieben die dies machen soll, aber diese funktioniert nicht wie sie soll, ich hoffe jemand kann mir helfen!

Methode:
Code:
char *WhatToSay(char *str)
{
    int size = strlen(str)-5; // -5 da "say:" weggeschnitten wird und ein \n am ende vom server hinzugefügt wird
    char *help = new char[size];
    bzero(help, size);
    cout << size << " - " << strlen(help) << endl;
    for(int i=0; i<size;i++)
    {
        char c = str[i+4];
        cout << i << "->" << c << " - " << strlen(help) << "->";
        help[i] = c;
        cout << strlen(help) << endl;
    }
    cout << strlen(help) << "-" << size << endl;
    return help;
}

Ausgabe auf meiner Konsole:
Code:
17 - 0
0->H - 0->1
1->a - 1->2
2->l - 2->3
3->l - 3->4
4->o - 4->5
5->  - 5->6
6->i - 6->7
7->c - 7->8
8->h - 8->9
9->  - 9->10
10->b - 10->11
11->i - 11->12
12->n - 12->13
13->  - 13->14
14->N - 14->15
15->A - 15->16
16->O - 16->20 //=> Problem!! Solange ist der String nicht
20-17
 
Hallo,
da du offensichtlich C++ nutzt, wieso nutzt du nicht die string Klasse? Das wäre etwas sicherer und ggf. einfacher.
Desweiteren fällt mir auf, das du möglicherweise kein Stringende-Zeichen "\0" verwendest. U.U schreibst du nämlich über deinen char Buffer drüber hinaus.
Auch würde ich statt der for-Schleife eine Funktion wie strncpy nutzen, solltest du da die C Funktionen weiter nutzen wollen.

Grüße
 
Hallo Jennesta,
Danke, dem String hat das End-Zeichen gefehlt. Ich bin normalerweise Java gewöhnt, da funktioniert alles etwas einfacher mit den Strings. Jetzt funktioniert es wie soll.

mfg Markus
 
Zurück