hace un mesecillo o así escribí preguntando como coger bien las cosas de archivos de configs y cosas así, así q ahora estaba haciendo un parsercillo :rolleyes:
el caso es q tengo un problema:
yo tengo esto:
char * pos; //Tiene toda una linea leida del archivo
char * final; //Lo q hay detrás del igual
unsigned int posiigual, posicoma; //Posición del '=' dentro de la clave y ';' dentro de lo leido
int i = 0;
posicoma = strcspn(pos, ";");
posiigual = strcspn(pos, "=");
posiigual++;
final = (char *)malloc(sizeof(char)); //Se le da tamaño de 1 y luego redimensiona solo cada vez q se añade algo
while (posiigual < posicoma)
{
final[i] = pos[posiigual];
printf("\n\nFinal-> '%s'", final); //Para ver en cada vuelta lo q tiene 'final'
i++;
posiigual++;
}
printf("\n\nPosiigual-> %d; Final[Posiigual]-> %c", posiigual, final[posiigual]);
printf("\nFinal fuera del FOR -> '%s'", final);
getch();
entonces si por ejemplo en el archivo tengo esto:
[seccion]
[cabecera]
clave=Hola que pasa;
lo q me devuelve al final es:
Hola que pasaf$
2 caracteres más de los q tiene la cadena, los cuales elegirá aleatoriamente. el caso es q ya no sé como hacer para q solo me coja hasta el ';' y nada más. en teoría esto lo hace bien, lo q no sé es pq me añade esos caracteres al final
Tienes que añadir otro caracter a la cadena y rellenarlo con el valor 0 (caracter nulo).
Oye, esto no lo he entendido:
Citarfinal = (char *)malloc(sizeof(char)); //Se le da tamaño de 1 y luego redimensiona solo cada vez q se añade algo
¿Qué es eso de que redimensiona solo? ¿donde?
Yo creo que deberias hacer algo así:
final = (char *)malloc(posicoma-posiigual);
un saludo
lo q quiero decir es q se le da tamaño de 1 char. y luego cuando voy haciendo lo de final = pos[posiigual]; pues me refiero a q cambia el tamaño de final a 1 char más. tampoco es q se redimensione solo pero es pa entenderme yo :P
es q si intento hacer la asignación sin q 'final' apunte a algun sitio me da error. entonces le hago q apunte al menos a un char.
pues voy a probar
thx
Pero, si solo asignas 1 char y luego escribes más, estás machacando memoria que no has reservado, así que te dará errores e incluso cuelgues...
Bueno, a ver si lo arreglas :)
joe pues si q andaba yo despistado, es verdad, me faltaba el nulo al final. ya ves q tontería :P
bueno q ya funciona, thx beri mach (ole)