SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: jesusfd en Sábado 18 de Diciembre de 2004, 11:55

Título: Tratamiento De Un Buffer (segunda Parte)!
Publicado por: jesusfd en Sábado 18 de Diciembre de 2004, 11:55
Hooola de nuevo, pero es ke tengo un problema que soy incapaz de solucionar:
   Resulta que recibo de un cliente, por un socket, un mensaje y guardo los tres argumentos que me puede mandar como mucho en las respectivas vbles así:
   if(nbytes = recv(fd,buforden,ORDSIZE,0)>0){
      orden=strtok(buforden," ");
      arg2=strtok(NULL," ");
      arg3=strtok(NULL," ");
   }

   Si después de esto pongo un printf para cada vble, sí me las imprime bien en pantalla, pero si lo que quiero es almacenarla y luego compararla con una palabra determinada y resulta que por ej el arg2 es igual a mi palabra, no me muestra nada!!!(creo que se puede deber a caracteres "raros q no se ven" que se meten y por eso ya no es la misma palabra).

   Alguien me puede decir como lo puedo solucionar??o alguna función que lo haga bien? He probado a hacerlo de muchas formas (vease otros posts) y no consigo guardar las palabras del dichoso buffer en sendas vbles correctamente.

   GRACIAS! (de nuevo).
Título: Re: Tratamiento De Un Buffer (segunda Parte)!
Publicado por: CiRRuS en Sábado 18 de Diciembre de 2004, 22:32
La funcion strtok devuelve un puntero al siguiente token y modifica la cadena que recibe como parametro (cuidado con eso), creo que no reserva memoria nueva para el puntero que devuelve.

¿Por qué no intentas probar con la función strdup para duplicar las cadenas que te devuelve strtok? Quiza eso te solucione el problema.

Espero haberte ayudado, si no es asi, no dudes en contarnos que te pasa.

Nos vemos :hola:
Título: Re: Tratamiento De Un Buffer (segunda Parte)!
Publicado por: jesusfd en Domingo 19 de Diciembre de 2004, 11:50
voy a probar con lo que me dijiste...pero eske al final me voy a liar con tanta funcion....jeje

gracias!