Manipulación de Arrays
Operaciones Básicas con Cadenas
La manipulación de arrays terminados en nulo implica varias técnicas clave:
Cálculo de la Longitud de una Cadena
#include <stdio.h>
#include <string.h>
int main() {
char texto[] = "LabEx Programación";
size_t longitud = strlen(texto);
printf("Longitud de la cadena: %zu\n", longitud);
return 0;
}
Copia de Cadenas
#include <stdio.h>
#include <string.h>
int main() {
char origen[] = "Hola, Mundo!";
char destino[50];
strcpy(destino, origen);
printf("Cadena copiada: %s\n", destino);
return 0;
}
Técnicas de Manipulación Avanzadas
Concatenación de Cadenas
#include <stdio.h>
#include <string.h>
int main() {
char primera[50] = "LabEx ";
char segunda[] = "Programación";
strcat(primera, segunda);
printf("Cadena combinada: %s\n", primera);
return 0;
}
Estrategias de Gestión de Memoria
graph TD
A[Asignar Memoria] --> B[Realizar Operación]
B --> C{Comprobar Límites}
C -->|Seguro| D[Modificar Array]
C -->|Inseguro| E[Posible Desbordamiento de Búfer]
Métodos de Manipulación Comunes
| Método |
Función |
Descripción |
strlen() |
Longitud |
Calcula la longitud de la cadena |
strcpy() |
Copia |
Copia una cadena a otra |
strcat() |
Concatenación |
Combina dos cadenas |
strncpy() |
Copia Segura |
Copia con límite de longitud |
Ejemplo de Manipulación Segura
#include <stdio.h>
#include <string.h>
void copia_segura(char *destino, size_t tam_destino, const char *origen) {
strncpy(destino, origen, tam_destino - 1);
destino[tam_destino - 1] = '\0'; // Asegurar terminación nula
}
int main() {
char buffer[10];
copia_segura(buffer, sizeof(buffer), "LabEx Funciona!");
printf("Copiado de forma segura: %s\n", buffer);
return 0;
}
Consideraciones Clave
- Siempre comprueba los tamaños de los búferes.
- Utiliza funciones de manipulación de cadenas seguras.
- Previene los desbordamientos de búfer.
- Asegúrate de la terminación nula después de las modificaciones.
Dominando estas técnicas, los desarrolladores pueden manipular de forma eficiente y segura arrays terminados en nulo en la programación C.