Para declarar Cadenas se usan arreglos de chars. Existen varias formas de declarar una Cadena:
//Cadena dinámica que no tiene tamaño en RAM pero si tiene un inicio
char *cadena;
//Cadena de tamaño fijo
char cadena[5];
//Cadena de tamaño que depende del contenido al declararla
char cadena[]="Cinco";
char *cadena="Cinco";En todas las declaraciones
cadena es un puntero.
Si se usa una cadena, el contenido de cadena será la posición ram en la que inicia el arreglo de chars. Para ubicar memoria para una cadena dinámica se puede usar malloc().
Por ejemplo:
//Entrega la dirección RAM en que la cadena comienza
printf("RAM en donde empieza la cadena: %u", cadena);
//Imprime el arreglo de chars desde el primer char hasta encontrar un NULL char (0x00).
printf("Contenido de la cadena: %s", cadena); Toda cadena que ha de ser modificada por la mayoría de funciones de String.h deberá tener un NULL char al final. Si la cadena no tiene un NULL char al final, las funciones leerán la memoria RAM en forma sucesiva hasta encontrar un 0x00 o hasta que el programe falle por no tener acceso a una sección de memoria.
Si quieres usar una eeprom externa para leer cadenas tienes que crear tus propias funciones o buscar las que tu compilador ya incluye. Las funciones de String.h están enfocadas a arreglos de chars ubicados en RAM, no en otros lugares.
Lo más fácil es volcar el contenido de cada byte de la eeprom externa en una cadena ubicada en RAM...
#define tamano 30
char cadena;
int16 dircadena;
int16 i;
...
//Leer una cadena desde eeprom externa
for(i=0;i<dircadena+tamano;i++)
{
cadena[i]=read_ext_eeprom(i+dircadena);
}
//Imprimir lo que se sacó de la eeprom
printf("La eeprom contiene esta cadena: %s",cadena);
Hay que tener cuidado al escribir la cadena en la eeprom externa, no olvidar incluir el NULL char en el último caracter.
Acabo de escribir ese programita, por favor dale una checada en caso de que me haya equivocado en algo
