GOSUB 100

[[librerias:c:cadenas]]


Page Tools

Site Tools

User Tools

Login

¡Actualmente no estás identificado! Introduce abajo tus datos de identificación para abrir una sesión. Necesitas tener las cookies activadas para identificarte.

Conectarse

Libreria para manipulacion de cadenas en C.

Introducción.

A continuación se adjunta librería para la manipulación avanzada de cadenas desde C.

cadenas.zip

No posee dependencias externas de otras librerías, e implementa las funciones más típicas para el trabajo con cadenas:

  • Longitud de cadenas.
  • Paso a mayúsculas y minúsculas.
  • Limpieza de espacios.
  • Copia de cadenas.
  • Comparación de cadenas.
  • Suma de cadenas.
  • Busqueda de subcadenas.
  • Obtención de subcadenas.
  • División de cadenas por caracteres clave.
  • División de cadenas por cadenas clave.
  • Codificación/Decodificación de cadenas a base64.

Se incluye fichero main.c con ejemplos de uso para algunas de las funciones principales de la librería.

Para un control cuidadoso de las cadenas, se ha definido la macro _MAX_STR_SIZE_ que controla el tamaño máximo de las cadenas.

Lista de funciones

length

int  length(char* str);

Retorna el número de caracteres que conforma la cadena que se pasa como parámetro.

En caso de no encontrarse el final de cadena, o en caso de que el tamaño de la cadena exceda el valor indicado por _MAX_STR_SIZE_ se retorna _BASE_STRING_TO_BIG_.

strToLower

void strToLower(char* baseString);

Pasa a minúsculas todas las letras que aparezcan en la cadena que se pasa como parámetro. El resto de los caracteres permanecen inalterados.

cleanSpaces

void cleanSpaces(char** baseStringPtr,unsigned char cleanOptions);

Elimina los espacios en blanco que aparezcan al comienzo y al final de la cadena pasada como parámetro.

Dependiendo del valor pasado a cleanOptions, se eliminarán los espacios por la derecha, por la izquierda o bien por ambos lados. Los valores posibles de cleanOptions son:

  • _FROM_RIGHT_
  • _FROM_LEFT_
  • _FROM_RIGHT_|_FROM_LEFT_

cpyStr

void cpyStr(char* source,char* destination);

Copia el contenido de la cadena source en la cadena destination.

La copia se hará efectiva siempre que el tamaño de las cadenas sea inferior al especificado por la macro _MAX_STR_SIZE_.

cmpStr

int cmpStr(char* string1, char* string2);

Realiza una comparación case-sensitive de las dos cadenas pasadas como parámetro.

En caso de ser iguales retorna _IDENTICAL_STRINGS_. En caso contrario retorna _DIFERENT_STRINGS_.

append

int append(char* newText,char* baseString);

Añade a la cadena baseString el contenido de la cadena newText.

La adición se hará efectiva si la suma de la longitud de ambas cadenas no excede el tamaño indicado por la macro _MAX_STR_SIZE_.

En caso contrario se devuelve -1.

find

int find(char* search,char* baseString, bool caseSensitive);

Realiza la búsqueda de la cadena search dentro de la cadena baseString.

Configurando el valor de caseSensitive a true obligas a que la búsqueda sea case-sensitive.

Si se encuentra la cadena search, se retorna la posición, dentro de la cadena baseString, en la que se produce la primera ocurrencia.

En caso contrario se devuelve _STRING_NOT_FOUND_.

find2

int find2(char* search,char* baseString, int initialPos, int finalPos,bool caseSensitive);

Igual que find, salvo que en lugar de realizar la búsqueda desde el principio hasta el final de la cadena baseString, te permite especificar los límites de la búsqueda.

En caso de que los límites de la búsqueda esten mal especificados, se devuelve _FIND_ERROR_.

Si no se encuentra ninguna coincidencia se devuelve _STRING_NOT_FOUND_.

En caso contrario se devuelve la posición donde se encuentra la cadena buscada.

subStr

int subStr(char* baseString, char* subString,unsigned int initialPos);

Obtiene una subcadena subString a partir de la posición initialPos de la cadena baseString.

splitWithChar

int splitWithChar(char* baseString, char separator, char* elements[]);

Divide la cadena baseString utilizando como separador el caracter separator.

La cadena original queda afectada, y los trozos obtenidos quedan referenciados por el array de punteros elements.

Se retorna el número de trozos en los que ha quedado dividida la cadena baseString.

En caso de que el número de trozos exceda el número indicado por la macro _MAX_SPLIT_ELEMENTS_, se retorna el error _TO_MANY_ELEMENTS_DETECTED_.

split

int split(char* baseString, char* separator, char* elements[]);

Igual que splitWithChar, salvo que se puede utilizar una cadena separadora en lugar de un único caracter.

encodeB64

void encodeB64(char *cadOrigen, char *cadDestino);

Codifica la cadena origen cadOrigen en base64 y el resultado lo vuelca a la cadena cadDestino.

decodeB64

signed char decodeB64(char *cadOrigen, char *cadDestino);

Decodifica la cadena origen cadOrigen, presuntamente codificada en base64, y el resultado lo vuelca a la cadena cadDestino.

Tareas pendientes

Implementar función replace