17/06/1999
La librería string.h en C es una parte fundamental de la programación en este lenguaje, proporcionando un conjunto de funciones esenciales para la manipulación de cadenas de caracteres. Si bien su uso es ampliamente extendido y ofrece portabilidad, es crucial ser consciente de potenciales problemas de seguridad, como el desbordamiento de búfer (buffer overflow), que pueden surgir si no se manejan adecuadamente.

Constantes y Tipos en string.h
Antes de adentrarnos en las funciones, es importante mencionar las constantes y tipos de datos definidos en string.h :
- NULL: Macro que representa un puntero nulo.
- size_t: Tipo entero sin signo que se utiliza para representar tamaños de datos y el resultado del operador sizeof .
Funciones Principales de string.h
La librería string.h ofrece una amplia gama de funciones para operar con cadenas de caracteres. A continuación, se detallan algunas de las más comunes, agrupadas por su funcionalidad:
Funciones de Copia y Movimiento de Memoria
| Función | Descripción |
|---|---|
| memcpy | Copia n bytes de una ubicación de memoria a otra. Las áreas de memoria no deben solaparse. |
| memmove | Similar a memcpy , pero permite que las áreas de memoria se solapen. |
| strcpy | Copia una cadena a otra. Importante : Es vulnerable a buffer overflow si la cadena de destino no tiene suficiente espacio. |
| strncpy | Copia un máximo de n caracteres de una cadena a otra. Más segura que strcpy , pero puede no copiar la cadena completa si el tamaño de la cadena original es mayor a n . |
| strdup | Crea una copia duplicada de una cadena, asignando dinámicamente la memoria necesaria. (Extensión POSIX) |
| mempcpy | Variante de memcpy que devuelve un puntero al byte siguiente al último byte escrito. (Extensión GNU) |
| memccpy | Variante de memcpy que se detiene al encontrar un byte determinado. (Extensión UNIX) |
Funciones de Comparación
| Función | Descripción |
|---|---|
| memcmp | Compara n bytes de dos áreas de memoria. |
| strcmp | Compara dos cadenas lexicográficamente (basado en el orden alfabético). |
| strncmp | Compara un máximo de n caracteres de dos cadenas. |
| strcoll | Compara dos cadenas según las reglas de comparación de la localización actual. |
Funciones de Búsqueda
| Función | Descripción |
|---|---|
| memchr | Busca la primera ocurrencia de un byte dado en una zona de memoria. |
| strchr | Busca la primera ocurrencia de un carácter dado en una cadena. |
| strrchr | Busca la última ocurrencia de un carácter dado en una cadena. |
| strcspn | Devuelve la longitud de la porción inicial de una cadena que no contiene ningún carácter de un segundo conjunto de caracteres. |
| strspn | Devuelve la longitud de la porción inicial de una cadena que solo contiene caracteres de un segundo conjunto de caracteres. |
| strstr | Busca una cadena dentro de otra cadena. |
| strpbrk | Busca la primera ocurrencia en una cadena de cualquier carácter presente en otra cadena. |
Funciones de Concatenación
| Función | Descripción |
|---|---|
| strcat | Concatena una cadena al final de otra. Importante : Vulnerable a buffer overflow si la cadena de destino no tiene suficiente espacio. |
| strncat | Concatena un máximo de n caracteres de una cadena al final de otra. Más segura que strcat . |
Funciones de Modificación de Cadenas
| Función | Descripción |
|---|---|
| strlwr | Convierte una cadena a minúsculas. |
| strupr | Convierte una cadena a mayúsculas. |
| strrev | Invierte una cadena. |
| strxfrm | Transforma una cadena a su forma de ordenación. |
Funciones de Tokenización
| Función | Descripción |
|---|---|
| strtok | Divide una cadena en tokens (subcadenas). No es thread-safe . |
| strtok_r | Versión thread-safe de strtok . (Extensión POSIX) |
Otras Funciones
| Función | Descripción |
|---|---|
| strlen | Devuelve la longitud de una cadena (sin incluir el carácter nulo). |
| strerror | Devuelve una cadena de caracteres que describe el código de error dado. |
| atoi | Convierte una cadena a un entero. |
| atof | Convierte una cadena a un número de punto flotante. |
| memset | Llena un bloque de memoria con un valor dado. |
Consideraciones de Seguridad
Es fundamental tener en cuenta las implicaciones de seguridad al utilizar las funciones de string.h. Las funciones que no especifican un límite de longitud de copia (como strcpy y strcat ) son particularmente vulnerables al desbordamiento de búfer. Se recomienda utilizar sus contrapartes con límites especificados (como strncpy y strncat ) para mitigar este riesgo. Asegúrese siempre de que el búfer de destino tenga suficiente espacio para almacenar los datos, incluyendo el carácter nulo de terminación.
Consultas Habituales
A continuación, se presentan algunas consultas habituales sobre la librería string.h :
- ¿Cómo obtener la longitud de una cadena? Utilice la función strlen .
- ¿Cómo copiar una cadena? Utilice strcpy (con cautela) o strncpy .
- ¿Cómo comparar dos cadenas? Utilice strcmp o strncmp .
- ¿Cómo concatenar dos cadenas? Utilice strcat (con cautela) o strncat .
- ¿Cómo buscar un carácter en una cadena? Utilice strchr o strrchr .
- ¿Cómo convertir una cadena a un entero? Utilice atoi .
- ¿Cómo convertir una cadena a un número de punto flotante? Utilice atof .
La librería string.h es una herramienta poderosa para la manipulación de cadenas en C, pero requiere un uso cuidadoso para evitar problemas de seguridad. Entender las funciones disponibles y sus limitaciones es crucial para escribir código robusto y seguro.
Si quieres conocer otros artículos parecidos a Funciones de la librería string.h en c puedes visitar la categoría Libros y Librerías.
