-
+ Antworten
Ergebnis 1 bis 4 von 4

Thema: Compact C: String löschen

  1. #1
    RN-Premium User Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    522

    Compact C: String löschen

    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?

  2. #2
    Erfahrener Benutzer Robotik Einstein Avatar von Dirk
    Registriert seit
    30.04.2004
    Ort
    NRW
    Beiträge
    3.621
    Wie bekomme ich dieses "Nichts" hin?
    Wenn ich richtig verstehe, was du machst, würde ich mit 32 auffüllen.

    Gruß Dirk

  3. #3
    RN-Premium User Roboter-Spezialist
    Registriert seit
    21.04.2009
    Beiträge
    522
    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... :/
    Code:
    byte StrLen(char str[])
    {
        byte len;
        len = 0;
        while(str[len] != 0)
        {
            len++;
        }
        return len;
    }

  4. #4
    Erfahrener Benutzer Robotik Einstein Avatar von Jaecko
    Registriert seit
    16.10.2006
    Ort
    Lkr. Rottal/Inn
    Alter
    32
    Beiträge
    1.970
    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.
    #ifndef MfG
    #define MfG

+ Antworten

Berechtigungen

  • Neue Themen erstellen: Ja
  • Themen beantworten: Ja
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •