Foros de daboweb
MULTIMEDIA, Video digital, Grabación, Diseño gráfico, Diseño web, Programación => Webmasters - Diseño Web - Programación - Diseño gráfico => Mensaje iniciado por: djmon en 21 de Mayo de 2005, 12:20:12 pm
-
Hola, tengo un problema al leer caracter a caracter un array de char(char buf [BUFSIZ])
El formato de este array de char es:(lo stoy recibiendo por sockets)
@1@[email protected]\n
@1@[email protected]\n
..
...
El problema que me da, esque al leer(normalmente) la ultima linea, mi algoritmo se fastidia y me sale violacion de segmento.
Hay algun algoritmo sencillo que pueda coger el segundo parametro y el tercero de cada linea de mi array de char?(es decir 4532 y file.txt por ejemplo)
Creo que el problema da porque no detecta bien los '\0' de fin de array o algo de eso.
a ver si alguien puede ayudarme,muchas gracias :roll:
por cierto programo con gcc 3.3.1(suse 9.0)
-
Cual es el codigo que tienes?
-
a ver, os pongo el algoritmo que coge cosas de char buf[]
x++;//pasamos de la opcion y la primera @
x++;
x++; //segunda arroba
while(x<strlen(buf))//bucle que coje todo buf
{
//limpiamos las variables
memset(ident,'\0',10);
memset(fich,'\0',20);
int j=0;
while ((buf[x]!='@')&&(buf[x]!='\0')&&(x<strlen(buf)))//vamos hasta la @
{
ident[j]=buf[x];
x++;
j++;
}
printf("%s",ident);
x++;//pasamos la @
//ahora hasta el final de linea leemos el nombre del fichero
j=0;
while ((buf[x]!='@')&&(buf[x]!='\0')&&(x<strlen(buf)))
{
fich[j]=buf[x];
x++;
j++;
}
printf("%s",fich);
//almacenamos en la lista de ficheros del servidor ident y fich
x++;//pasamos de la opcion y la primera @
x++;
x++; //segunda arroba
}
free(fich);
free(ident);
muchas gracias por la ayuda :roll:
-
...no se, no lo veo bien, pero podria ser la suma de la cadena, talvez llega null y por eso falla...
-
pues vaya, la solucion era,que a veces tengo puesto un tamaño BUFSIZ para buf y otras veces lo limpio con 32768 y no le gusta...
gracias por todo :wink:
-
...jeje...asi es todo, cuando vemos el error nos provoca :x ...pero asi es como se aprende... :wink: ...