Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: rod00x3 en 4 Enero 2013, 16:20 pm



Título: ayuda con manejo de cadenas y apuntadores
Publicado por: rod00x3 en 4 Enero 2013, 16:20 pm
mi duda es sobre como puedo hacer para declarar un array de characteres y convertirlo en cadena o comparar un arreglo con una condicion de cadena ejemplo

char linea[1024];

cto=recvfrom(sock, linea, sizeof linea,0 , (sad) &sin1, &l)

segun este comando lee de un socket y en cto me devuelve la cantidad de bytes leidos y guarda en linea lo que leyo.

solo quiero que cuando se teclee fin me despliegue Llego, ya intente llenar todo linea con '\0' antes de leer el socket, pero nada no me funciona.
el problema se da cuando quiero comparar lo que me llega con:

if(linea=="fin"){printf("\nLlegoo");}
if(linea=="fin\0"){printf("\nLlegoo");}
pero no lo logro que esta mal??


Título: Re: ayuda con manejo de cadenas y apuntadores
Publicado por: avesudra en 4 Enero 2013, 17:54 pm
Para comparar cadenas en C se utiliza la función:
Código
  1. int strcmp ( const char * str1, const char * str2 );
Valor de retorno:
  • 0 si son iguales
  • Un valor mayor que 0 si el primer caracter de str1 ,que no coincide con el de str2, es mayor que el primer carácter de str2. Un valor menor que 0 indica lo contrario.

Fuente --> http://www.cplusplus.com/reference/cstring/strcmp/

Así que si la cadena que viene del buffer tiene final de cadena puedes hacer esto:

Código
  1. if(strcmp(linea,"fin")== 0)
  2. {
  3.  printf("\nLlegoo");
  4. }


Título: Re: ayuda con manejo de cadenas y apuntadores
Publicado por: durasno en 4 Enero 2013, 18:38 pm
Para que no haya confuciones avesudra se olvido de un parentesis :)

Código
  1.    if(strcmp(linea,"fin")== 0)  /* <-- ahi faltaba un parentesis */
  2.    {
  3.     printf("\nLlegoo");
  4.    }


Título: Re: ayuda con manejo de cadenas y apuntadores
Publicado por: 0xDani en 4 Enero 2013, 20:29 pm
Porque poner ==0? No es mas facil asi? :
Código
  1. if(!strcmp(linea, "fin"))


Título: Re: ayuda con manejo de cadenas y apuntadores
Publicado por: avesudra en 4 Enero 2013, 20:43 pm
Cierto durasno, un descuido  :-\ . Si que es mas fácil pero si el usuario no sabe que para comparar cadenas hay que utilizar strcmp , no me atrevo a poner eso 0xDani .


Título: Re: ayuda con manejo de cadenas y apuntadores
Publicado por: rod00x3 en 7 Enero 2013, 19:24 pm
Cierto lo que me mencionaron, funciono a la perfeccion, gracias.