PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Compact C: String löschen



Fabian E.
27.05.2010, 21:35
Hallo,
ich suche nach einer Möglichkeit in Compact C einen String (char Array) effektiv zu löschen.
Hier das Szenario: Mein RP6 empfängt ein Commando-String über UART und wertet ihn aus. Dann muss er diesen String aber wieder löschen, er ist ja abgearbeitet.
Wie geht das? Zu Debugzwecken zeige ich den empfangenen Text immer im Display an.
Der Text darf maximal 32 Zeichen lang sein (char text[32]). Nachdem er empfangen ist, sehe ich im Display genau das was ich gesendet habe, also dahinter nichts mehr.
Wie bekomme ich dieses "Nichts" hin? NULL scheint es da irgendwie nicht zu geben... Und ein Auffüllen mit '\0' bringts leider nicht...
Er zeigt auf dem Display alle '\0' als 0 an... Und verarbeitet das scheinbar auch so...

Also: Wie lösche ich einen String?

Dirk
27.05.2010, 21:46
Wie bekomme ich dieses "Nichts" hin?
Wenn ich richtig verstehe, was du machst, würde ich mit 32 auffüllen.

Gruß Dirk

Fabian E.
27.05.2010, 22:18
Das wäre ja gepfuscht ;)
Die Lösung bestand dann jetzt daraus, dass ich mir Str_Len selbst geschrieben habe...
Warum es dann jetzt allerdings klappt weiß ich nicht... :/

byte StrLen(char str[])
{
byte len;
len = 0;
while(str[len] != 0)
{
len++;
}
return len;
}

Jaecko
28.05.2010, 07:39
Alternativ: memset(text, 0x00, 32); setzt den String text mit ner Länge von 32 auf 0x00.

Ansonsten: Eine zusätzliche Variable, die angibt, wie viele Zeichen in diesem String abgearbeitet werden sollen. Werden 5 Zeichen empfangen, wird die Variable auf 5 gesetzt. Nach der Abarbeitung kriegt die den Wert 0. Also nur auswerten, wenn die Variable > 0 ist; geht etwas schneller, als den String jedes mal komplett zu löschen.