löschen von variablen inhalten?



  • habe ein array feld
    char puffer[20]

    wenn ich
    puffer[0] = '\0';
    eingebe ist der wert der drin stand weg.

    sobald ich aber
    puffer[i] = /irgendwas/ ; i++
    innerhalb einer zählschleife mache steht der vorherige wert auf einmal wieder drin...

    gibt es vielleicht noch andere möglichkeiten den inhalt zu löschen? vielleicht bleibt er dann ja weg...



  • hi,

    also loeschen deines "strings" tust du ja mit pointer[0]='\0' nicht. du setzt nur eine endmarke fuer deinen "string".
    jetzt ist die frage was du genau willst. willst du das man nicht mehr lesen kann was im "string" drin stand, dann ueberschreibe einfach jede position mit einem '\0' oder verwende new und delete, wobei nach delete natuerlich die werte, zb buchstaben immer noch im speicher stehen, aber ueberschrieben werden koennen.

    msp



  • ach so nee..

    also ich will in die variable halt immer wieder von pos 0 reinschreiben können ohne das schon was drin steht.
    zb steht PETER im 1ten durchlauf
    und im 2ten (will man) PAUL - dann steht aber PAULR mit dem R noch von PETER

    also will ich den inhalt sauber löschen bevor ich in den 2ten durchgang gehe.



  • hi,

    also dann schreib dir ne funktion die den "string" loescht.
    zb

    char* loesche(char* zeiger)
    {
       for(int i=0;i<strlen(zeiger);i++)zeiger[i]='\0';
    }
    

    aufruf dann:

    pointer=loesche(pointer);



  • nochmal ich,

    wie waers mit der funktion strcpy(dest,source) aus string.h

    gruss
    msp



  • Was soll das denn werden ??

    Das machst du einfach so;

    char foo[20];

    foo[0] = 'P';
    foo[1] = 'e';
    foo[2] = 't';
    foo[3] = 'e';
    foo[4] = '\0';

    Wie du siehst, wird das Ende mit \0 markiert, was dahinter steht wird nicht mehr gelesen,
    da ich mit \0 das Ende meines Strings markiere, ich kann jetzt jederzeit was anderes
    reinschreiben und häng hinter das letzte Zeichen einfach nen \0
    Nur darf der String nicht länger als 19Zeichen ohne dem \0 sein (mit also 20).

    Außerdem ist std::string schöner:

    std::string foo;

    foo = "Peter";
    foo = "SirLant";
    foo = "bar";



  • entweder so, oder ZeroMemory() oder memset() ( kommt aufs gleiche raus ).
    ich würd aber strcpy() verwenden, oder einfach "PAUL\0" reinschreiben.



  • lol

    fast gleichzeitig.

    achja: mein post bezieht sich auf das obere von msp


Anmelden zum Antworten