Este artículo explica cómo establecer o cambiar el valor de la array de caracteres sin firmar durante el tiempo de ejecución en C.
Dado:
supongamos que tenemos una array de caracteres sin firmar de tamaño n
unsigned char arr[n] = {}; // currently arr = {'', '', '', ...}
Para hacer:
Queremos establecer o cambiar los valores de esta array durante el tiempo de ejecución.
Por ejemplo, queremos hacer la array
arr = {'1', '2', '3', ...}
Solución:
Esto se puede lograr con la ayuda del método memcpy() . memcpy() se usa para copiar un bloque de memoria de una ubicación a otra. Se declara en string.h
Sintaxis:
// Copies "numBytes" bytes from address "from" to address "to" void * memcpy(void *to, const void *from, size_t numBytes);
A continuación se muestra la implementación del programa anterior:
// C program to set the value // of unsigned char array during runtime #include <stdio.h> #include <string.h> int main() { // Initial unsigned char array unsigned char arr[3] = { 0 }; // Print the initial array printf("Initial unsigned char array:\n"); for (size_t i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) { printf("%c ", arr[i]); } printf("\n"); // Using memcpy() to change the values // during runtime memcpy(arr, (unsigned char[]){ '1', '2', '3' }, sizeof arr); // Print the updated array printf("Updated unsigned char array:\n"); for (size_t i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) { printf("%c ", arr[i]); } printf("\n"); return 0; }