(Juan Alejandro Knight) wrote:
> cuando me refiero a "adentro" es el uso de scope de una funcion estructurada
> cuando a un if un le pones {...} es para que se ejecute lo de adentro _solo_
> si se cumple la condicion
> o que haces es similar a lo siguiente
> if (i == 0) {
>    if (i > 0) { /*nunca va a ser verdadero esto porque i es cero*/
>        .....
>    }
> }
>
> lo desarrollo mas claro abajo, comentando cual es el error e indentando para
> mayor claridad
>
> while(1)
> {
>  ....
>  if (((strcmp ("/help", buffer_c) == 0)) || ((strcmp ("/h", buffer_c) ==
> 0)))
>  {
>      {/*llave innecesaria*/
>      printf("Help ... /quit --> cliente cierra el socket\n");
>      }/*llave innecesaria*/
>      if (strcmp("/quit", buffer_c) == 0)
>      { /*nunca entra a este if porque buffer_c es /help o /h => esta dentro
> del if anterior*/
>          printf("Se ha salido del chat\n");
>          close(sockfd);
>      }
>  }
>  ...
> }
>
> solucion:
> sacar el if de quit afuera y juntar con un else
>
> while(1)
> {
>  ....
>  if (((strcmp ("/help", buffer_c) == 0)) || ((strcmp ("/h", buffer_c) ==
> 0)))
>  { /*esta llave se puede eliminar junto con la siguiente porque adentro hay
> una sola instruccion*/
>    /*las llaves innecesarias se eliminaron*/
>    printf("Help ... /quit --> cliente cierra el socket\n");
>  }
>  else if (strcmp("/quit", buffer_c) == 0)
>  { /*este if salio afuera del if anterior y se conecto con un else*/
>    printf("Se ha salido del chat\n");
>    close(sockfd);
>  }
>  ...
> }
>

alejandro, todavia sigo con dolores de cabeza. A pesar de estas
modificaciones que he hecho, todavia no me toma los "/quit" "/h"
"help"



while(1)
        {
        memset(buffer_c, 0, sizeof(buffer_c));  
        printf("Mensaje para enviar al servidor -> ");
        fgets(buffer_c, sizeof(buffer_c), stdin);

                if (((strcmp ("/help", buffer_c) == 0)) || ((strcmp ("/h", 
buffer_c) == 0)))
                {

                        
                                printf("Help ... /quit --> cliente cierra el 
socket\n");
                }       
                else if (strcmp("/quit", buffer_c) == 0)
                {       
                      printf("Se ha salido del chat\n");
                               close(sockfd);

                 }

                n = write(sockfd, buffer_c, strlen(buffer_c)+1);
                        
                                if (n <= 0) {
                                        printf("error en write()");
                                        close(sockfd);
                                exit(-1);
                                }
        
        printf("Mensaje Ok\n");
}




-- 
/* Leonardo Rios
* rios[dot]lj[at]gmail[dot]com
*/
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion

Responder a