ayuda con manejo de cadenas y apuntadores

Iniciado por rod00x3, 4 Enero 2013, 16:20 PM

0 Miembros y 1 Visitante están viendo este tema.

rod00x3

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??

avesudra

#1
Para comparar cadenas en C se utiliza la función:
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:

if(strcmp(linea,"fin")== 0)
{
 printf("\nLlegoo");
}
Regístrate en

durasno

Para que no haya confuciones avesudra se olvido de un parentesis :)

    if(strcmp(linea,"fin")== 0)  /* <-- ahi faltaba un parentesis */
    {
     printf("\nLlegoo");
    }
Ahorrate una pregunta, lee el man

0xDani

Porque poner ==0? No es mas facil asi? :
if(!strcmp(linea, "fin"))
I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM

avesudra

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 .
Regístrate en

rod00x3

Cierto lo que me mencionaron, funciono a la perfeccion, gracias.