Fremden Array bis '\0' lesen? Ist aber nicht 0 terminiert!



  • Hallo zusammen,

    ich bekomme von einem fremden System einen char - Array char xy[length] mit Informationen.

    Dieser Array ist leider nicht '\0' terminiert! Wie kann ich den Array so mit '\0' terminieren, dass die richtige Ihnhalte nicht verloren gehen!?! Ich glaube da war etwas mit der Funktion

    memcpy
    

    ! Oder ?

    Danke 🙂



  • Wo bekommst du denn length her?
    Sofern du diese Information hast, dann einfach

    xy[length] = '\0';
    

    schreiben. Aber aufpassen, dass das Array auch gross genug ist.

    Sollte das Array nicht beschreibbar sein (zB weil const), dann einfach eine Kopie anlegen

    char* xy_copy = malloc(length + 1);
    if (!xy_copy)
        blabla;
    memcpy(xy_copy, xy, length);
    xy_copy[length] = '\0';
    

    Und nach Gebrauch die Speicherfreigabe nicht vergessen!



  • Hi!

    Es funktioniert leider nicht!

    #define INFO_LEN	8
    
    char *info = new char[INFO_LEN + 1];
    memset(info , 0, INFO_LEN + 1);
    memcpy(info , fremdSystem->daten, INFO_LEN); 
    INFO[INFO_LEN + 1] = '\0';
    

    Ich bekomme nur wirres Zeug!



  • Es funktioniert 🙂

    char *info = new char[INFO_LEN + 1]; 
    memset(info , 0, INFO_LEN + 1); 
    memcpy(info , fremdSystem->daten, INFO_LEN); 
    INFO[INFO_LEN] = '\0';
    

    ... code ...

    delete []info;
    

    Danke 🙂


Anmelden zum Antworten