logo

memset() en C con ejemplos

conjunto de memorias() se utiliza para llenar un bloque de memoria con un valor particular.
La sintaxis de la función memset() es la siguiente:

 // ptr ==>Dirección inicial de la memoria a llenar // x ==> Valor a llenar // n ==> Número de bytes a llenar comenzando // desde ptr a llenar void *memset(void *ptr, int x, size_t n );>

Tenga en cuenta que ptr es un puntero vacío, por lo que podemos pasar cualquier tipo de puntero a esta función.



Veamos un ejemplo simple en C para demostrar cómo se usa la función memset():








// C program to demonstrate working of memset()> #include> #include> > int> main()> {> >char> str[50] =>'GeeksForGeeks is for programming geeks.'>;> >printf>(>' Before memset(): %s '>, str);> > >// Fill 8 characters starting from str[13] with '.'> >memset>(str + 13,>'.'>, 8*>sizeof>(>char>));> > >printf>(>'After memset(): %s'>, str);> >return> 0;> }>

cuantas teclas tienen los teclados
>

>

Producción:

 Before memset(): GeeksForGeeks is for programming geeks. After memset(): GeeksForGeeks........programming geeks.>

Explicación: (cadena + 13) apunta al primer espacio (índice basado en 0) de la cadena GeeksForGeeks es para expertos en programación, y memset() establece el carácter '.' comenzando desde el primer ' ' de la cadena hasta 8 posiciones de caracteres del dado. cadena y por lo tanto obtenemos el resultado como se muestra arriba.


pruebas y tipos de pruebas



// C program to demonstrate working of memset()> #include> #include> > void> printArray(>int> arr[],>int> n)> {> >for> (>int> i=0; i printf('%d ', arr[i]); } int main() { int n = 10; int arr[n]; // Fill whole array with 0. memset(arr, 0, n*sizeof(arr[0])); printf('Array after memset() '); printArray(arr, n); return 0; }>

>

>

Producción:

 0 0 0 0 0 0 0 0 0 0>


Ejercicio :

Predecir el resultado del siguiente programa.




// C program to demonstrate working of memset()> #include> #include> > void> printArray(>int> arr[],>int> n)> {> >for> (>int> i=0; i printf('%d ', arr[i]); } int main() { int n = 10; int arr[n]; // Fill whole array with 100. memset(arr, 10, n*sizeof(arr[0])); printf('Array after memset() '); printArray(arr, n); return 0; }>

f películas

>

>

Tenga en cuenta que el código anterior no establece valores de matriz en 10, ya que memset funciona carácter por carácter y un número entero contiene más de un byte (o carácter).

Sin embargo, si reemplazamos 10 con -1, obtenemos valores de -1. Porque la representación de -1 contiene todos los 1 en el caso de char e int.

Referencia: página de manual de memset (linux)