String Null terminieren
-
String message; int Size,lenght; char Buff[1024]; char v = 0; message = "ISI" + v; strcpy(Buff,message.c_str()); Size = sizeof(Buff); lenght = strlen(Buff); UDP1->SendBuffer(Buff,Size,lenght);Wird der String auf diese Art Null terminiert gesendet oder nicht ?
c_str() macht mir da sorgen
Weiß jemand rat ?
-
Hallo
Im Grunde ja.
Allerdings solltest du statt strcpy besser strncpy nehmen.Aber warum nicht gleich so?
UDP1->SendBuffer(message.c_str(),1024,message.Length());bis bald
akari
-
Vielen Dank Akari

Also so:
String message; char v = 0; message = "ISI" + v; UDP1->SendBuffer(message.c_str(),1024,message.Length());So richtig wenn er null terminiert gesendet werden soll ?
-
Hallo,
c_str() gibt einen nullteminierten String zurück.
Das hier sollte also gehen.UDP1->SendBuffer(message.c_str(),1024,message.Length()+1);
-
@Braunstein: Sollte doch auch ohne +1 gehen, da die Zählung bei Arrays bei 0 beginnt.
-
Ich hab einfach mal angenommen, dass der letzte Parameter die Länge darstellt (kenne SendBuffer nicht). In diesem Fall muss die 1 da rein um das schließende Nullbyte mit zu übertragen. AnsiString::Length berücksichtigt das ja nicht.
-
Öh, ich hab zu lange nichts mehr mit Arrays gemacht...
Aber meinem Verständnis nach:char[5] cTest = "12345";char[0] ist '1'
char[1] ist '2'
char[2] ist '3'
char[3] ist '4'
char[4] ist '5'
somit zeigt dann char[5] bereits auf das \0 und das +1 ist unnötig.
-
Natürlich würde char[5] hier \0 sein, aber das ist nunmal das 6. Zeichen. Du hast auch hier nur für 5 Platz.
-
Öh ja, jetzt, wo Du das so sagst...

Du hast natürlich Recht.
-
Ich sehe wir verstehen uns.

Schöne Grüße aus Tokyo.Ciao
-
Braunstein schrieb:
Schöne Grüße aus Tokyo.
_neidisch sei_