[C con Clase] Tratamiento de cadenas

Programante programante en gmail.com
Jue Ene 31 12:40:33 CET 2008


Alejandro escribió:
> ¡Hola lista! Cada vez me asusto más mirando lo que perdí en los escasos meses que dejé de programar... ¡ya no doy hecho ni la función que quiero. Tras decidir usar la idea de Steven de la librería cstring, me surjen ciertos problemas entre cadenas y punteros que me tiene algo descolocado. La función es ésta:
>
> char* ModTexto(char inicial[128], int jug, int oponente)
>
> Y en su interior, por partes, tengo ésto para resolverlo de la forma qe me aconsejó Steven:
>
> 1.  Buscar '%' en la cadena: original
>
>       char definitiva[128];//Cadena definitiva
>       int k, i, x;//Contadores
>       char busca = '%';//Caracter a buscar
>       
>       for(k = 0; inicial[k] != busca; k++);
>
>
>
> 2.  Copiar la subcadena de original hasta '%' al final de: resultado (aquí se presenta el primer problema)
>
>       strncat(definitiva, inicial, k);
>
> Como ya me da un problema, no sigo. A contnuación escribo "return definitiva" y lo que me devuelve es la cadea "a9D" o similar. No estoy seguro de cuál es el problema, pero intuyo que es algo relacionado con los punteros/cadenas/funciones que devuelven cadenas. Y como ya dije, hace varios meses que no programo y tengo algo olvidados esos temas... ¿Alguna ayuda?
>   
Veo varios problemas:
1- No compruebas la posibilidad de que inicial no contenga %, con lo que 
seguirías indefinidamente.
2-Estás añadiendo al final de definitiva, pero definitiva no contenía 
nada (tenía basura).
3-Problemas si inicial > definitiva.

Te aconsejo usar strchr()




Más información sobre la lista de distribución Cconclase