Te pego un trozo de código de mi Ejemplito 16F876A: Recibiendo del RS232 sobre un Buffer y procesandolo posteriormente que imagino hace una cosa parecida a la que tú planteas pero sobre el string cbuff
Codigo:
...
// CONSTANTES ////////////////////////////////////////////////
int const lenbuff=32; // Longitud de buffer, Ajustar
// a lo que desees (o te sea posible)
// VARIABLES EN RAM ////////////////////////////////////////////////
char cbuff[lenbuff]; // Buffer
int xbuff=0x00; // Índice: siguiente char en cbuff
...
// Declaración de Funciones ////////////////////////////////////////////////
void inicbuff(void); // Borra buffer
void inicbuff(void){ // Inicia a cbuff -------------------
int i;
for(i=0;i<lenbuff;i++){ // Bucle que pone a 0 todos los
cbuff[ i ]=0x00; // caracteres en el buffer
}
xbuff=0x00; // Inicializo el indice de siguiente
// caracter
}
Que es una implementación de lo que el maestro Pocher te ha posteado en el mensaje anterior a éste. A esta función inicbuff() la llamo cada vez que debo asegurarme que el buffer de recepción está completamente limpio, que es cada vez que termino de procesar lo recibido.
Espero que te sirva.