-
Notifications
You must be signed in to change notification settings - Fork 0
memset
La función ft_memset llena un bloque de memoria con un valor específico durante un número determinado de bytes.
MEMSET(3) (simplified)
NAME
memset -- fill a byte string with a byte value
SYNOPSIS
void *memset(void *b, int c, size_t len);
DESCRIPTION
The memset() function writes len bytes of value c (converted to an unsigned char) to the string b.
RETURN VALUES
The memset() function returns its first argument.
La función memset() toma un bloque de memoria (apuntado por el argumento b), un valor (el argumento c), y una longitud len. Llena los primeros len bytes del bloque de memoria con el valor c (convertido a un unsigned char). La función devuelve el puntero al bloque de memoria original.
Aquí te muestro mi implementación de la función ft_memset en mi proyecto de Libft.
#include "libft.h"
void *ft_memset(void *b, int c, size_t len)
{
unsigned char *tmp;
// Convertimos el puntero 'b' a un puntero de tipo unsigned char
// para trabajar con los bytes individuales.
tmp = (unsigned char *)b;
// Llenamos el bloque de memoria con el valor de 'c' durante 'len' bytes.
while (len > 0)
{
// Asignamos el valor de 'c' (convertido a unsigned char) a la posición actual.
*(tmp++) = (unsigned char)c;
// Reducimos 'len' en cada iteración para recorrer todo el bloque de memoria.
len--;
}
// Devolvemos el puntero original 'b'.
return (b);
}El siguiente código es un ejemplo de cómo puedes probar la función ft_memset():
#include <stdio.h>
void *ft_memset(void *b, int c, size_t len);
int main(void)
{
char str[50] = "Libft es genial!";
printf("Antes de memset: %s\n", str);
ft_memset(str, '*', 5);
printf("Después de memset: %s\n", str); // Debe llenar los primeros 5 caracteres con '*'
return 0;
}-
¿Por qué usar
memset?
memsetes una función muy útil cuando necesitas inicializar bloques de memoria con un valor específico. Es especialmente eficiente cuando trabajas con arrays o buffers grandes y deseas asignar rápidamente un valor a todos los elementos. -
¿Cuándo usar
memset?
Usamemsetcuando quieras rellenar un bloque de memoria con un valor determinado, ya sea para inicializar estructuras, buffers o arrays, o cuando necesitas asegurarte de que la memoria está vacía o llena de un valor constante antes de usarla. Es particularmente útil al trabajar con datos binarios o al asignar memoria dinámica.