cancellare un array di caratteri c



8 Answers

Un array in C è solo una locazione di memoria, quindi in effetti my_custom_data[0] = '\0'; assegnazione semplicemente imposta il primo elemento a zero e lascia gli altri elementi intatti.

Se vuoi cancellare tutti gli elementi dell'array, dovrai visitare ogni elemento. Questo è ciò che memset è per:

memset(&arr[0], 0, sizeof(arr));

Questo è generalmente il modo più veloce per prendersi cura di questo. Se puoi usare C ++, considera invece std :: fill:

char *begin = &arr;
char *end = begin + sizeof(arr);
std::fill(begin, end, 0);
c arrays char

Ho pensato impostando il primo elemento su null cancellerebbe l'intero contenuto di un array di caratteri.

char my_custom_data[40] = "Hello!";
my_custom_data[0] = '\0';

Tuttavia, questo imposta solo il primo elemento su null.

o

my_custom_data[0] = 0; 

piuttosto che usare memset , ho pensato che i 2 esempi sopra dovrebbero cancellare tutti i dati.




Uso:

memset(my_custom_data, 0, sizeof(my_custom_data));

O:

memset(my_custom_data, 0, strlen(my_custom_data));



Prova il seguente codice:

void clean(char *var) {
    int i = 0;
    while(var[i] != '\0') {
        var[i] = '\0';
        i++;
    }
}



No. Tutto quello che stai facendo è impostare il primo valore su '\ 0' o 0.

Se stai lavorando con stringhe con terminazione nulla, nel primo esempio otterrai un comportamento che riproduce ciò che ti aspetti, tuttavia la memoria è ancora impostata.

Se vuoi cancellare la memoria senza usare memset, usa un ciclo for.




Scrivere un carattere null al primo personaggio fa proprio questo. Se lo trattate come una stringa, il codice che obbedisce al carattere di terminazione null lo tratterà come una stringa nulla, ma non è lo stesso che cancellare i dati. Se vuoi effettivamente cancellare i dati dovrai usare memset.




imposta il primo elemento su NULL. stampare il char array non ti restituirà nulla.




Di solito faccio solo così:

memset(bufferar, '\0', sizeof(bufferar));



Prova quanto segue:

strcpy(my_custom_data,"");



Related


Tags

c   arrays   char