[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