HOWTO · C
Borrar un array de caracteres en C
Este artículo muestra cómo borrar un array de caracteres en C
Este artículo explicará varios métodos para limpiar un array de caracteres en C.
Usar la función memset para limpiar un array de caracteres en C
La función memset se utiliza generalmente para establecer la región de memoria con el valor constante. La función es parte de la biblioteca estándar y se define en el archivo de cabecera <string.h>.
La función memset toma tres argumentos - el primero es el puntero void a la región de memoria, el segundo argumento es el valor constante del byte, y el último denota el número de bytes a rellenar en la dirección de memoria dada. Tenga en cuenta que podemos pasar el valor entero 0 para limpiar el array char.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void printCharArray(char *arr, size_t len) {
printf("arr: ");
for (size_t i = 0; i < len; ++i) {
printf("%c, ", arr[i]);
}
printf("\n");
}
#define LENGTH 20
int main() {
char c_arr[LENGTH] = {'a', 'b', 'c', 'd', 'e', 'f', 'g'};
printCharArray(c_arr, LENGTH);
memset(c_arr, 0, LENGTH);
printCharArray(c_arr, LENGTH);
exit(EXIT_SUCCESS);
}
Producción :
arr: a, b, c, d, e, f, g, , , , , , , , , , , , , ,
arr: , , , , , , , , , , , , , , , , , , , ,
Alternativamente, memset puede ser llamado con el carácter específico como argumento constante de bytes, lo que puede ser útil para inicializar cada elemento del array dado con los mismos valores. En este caso, elegimos arbitrariamente el carácter cero para llenar el array, resultando en una región de memoria despejada.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void printCharArray(char *arr, size_t len) {
printf("arr: ");
for (size_t i = 0; i < len; ++i) {
printf("%c, ", arr[i]);
}
printf("\n");
}
#define LENGTH 20
int main() {
char c_arr2[LENGTH] = "techarmp array";
printCharArray(c_arr2, LENGTH);
memset(c_arr2, '0', LENGTH);
printCharArray(c_arr2, LENGTH);
exit(EXIT_SUCCESS);
}
Producción :
arr: t, e, m, p, , a, r, r, a, y, , , , , , , , , , ,
arr: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
Usar las funciones bzero o explicit_bzero para limpiar un array de caracteres en C
bzero es otra función de la biblioteca estándar para llenar la zona de memoria con los bytes cero \0. Sólo toma dos argumentos - el puntero a la región de memoria y el número de bytes a sobrescribir. Por otro lado, explicit_bzero es una alternativa que garantiza la realización de la operación de escritura independientemente de las optimizaciones del compilador. Si el usuario lo indica, el compilador analiza el código en busca de instrucciones redundantes y las elimina, y la función explicit_bzero está diseñada para este escenario específico.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void printCharArray(char *arr, size_t len) {
printf("arr: ");
for (size_t i = 0; i < len; ++i) {
printf("%c, ", arr[i]);
}
printf("\n");
}
#define LENGTH 20
int main() {
char c_arr[LENGTH] = {'a', 'b', 'c', 'd', 'e', 'f', 'g'};
printCharArray(c_arr, LENGTH);
bzero(c_arr, LENGTH);
printCharArray(c_arr, LENGTH);
explicit_bzero(c_arr, LENGTH);
printCharArray(c_arr, LENGTH);
exit(EXIT_SUCCESS);
}