Foros del Web » Programación para mayores de 30 ;) » C/C++ »

ayuda con un error

Estas en el tema de ayuda con un error en el foro de C/C++ en Foros del Web. alguien me puede decir por que no me sirbe esto? Código: #include <iostream> int main(int argc, char** argv){ if (argc == 4){ if (argv[1] == ...
  #1 (permalink)  
Antiguo 16/06/2008, 09:16
Avatar de Fayca  
Fecha de Ingreso: abril-2008
Mensajes: 164
Antigüedad: 16 años, 1 mes
Puntos: 2
ayuda con un error

alguien me puede decir por que no me sirbe esto?
Código:
#include <iostream>
int main(int argc, char** argv){
    if (argc == 4){
        if (argv[1] == "copy"){
            FILE *f1, *f2;
            f1 = fopen (argv[2], "rb");
            if (f1 == NULL)  perror("Error:"); return -1;
            f2 = fopen (argv[3], "wb");
            if (f2 == NULL) perror("Error:"); return -1;
            char buffer[1000];
            int leidos;
            leidos = fread (buffer, 1, 1000, f1);
            if (leidos == NULL) perror("Error"); return -1;
            fwrite (buffer, 1, leidos, f2);
            while (leidos!=0){
                fwrite (buffer, 1, leidos, f2);
                leidos = fread (buffer, 1, 1000, f1);
            }
            fclose(f1);
            fclose(f2);

        }
    }
    return 0;
}
no me da ningun error al compilar
trato que sirba para copiar archivos
  #2 (permalink)  
Antiguo 16/06/2008, 11:10
 
Fecha de Ingreso: junio-2008
Ubicación: Seattle, USA
Mensajes: 733
Antigüedad: 15 años, 10 meses
Puntos: 61
Respuesta: ayuda con un error

Usa llaves para agrupar instrucciones

Código:
if (f1 == NULL)  perror("Error:"); return -1;
es lo mismo que

Código:
if (f1 == NULL)  
   perror("Error:"); 

return -1;
o sea, return -1 se ejecuta incondicionalmente
  #3 (permalink)  
Antiguo 16/06/2008, 11:54
Avatar de Fayca  
Fecha de Ingreso: abril-2008
Mensajes: 164
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: ayuda con un error

creeo "no estoy seguro" que el error esta en esta linea

if (argv[1] == "copy"){

si el error es ese como le puedo hacer para esa comparacion?
  #4 (permalink)  
Antiguo 16/06/2008, 12:11
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Respuesta: ayuda con un error

Con la función strcmp.

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
  #5 (permalink)  
Antiguo 16/06/2008, 12:41
Avatar de Fayca  
Fecha de Ingreso: abril-2008
Mensajes: 164
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: ayuda con un error

Gracias¡¡
ya solucione el error
solo era el error del if y hacer la comparacion con strcmp
perdon por la pregunta tonta es que estoy aprendiendo solo
  #6 (permalink)  
Antiguo 16/06/2008, 12:57
Avatar de _Lucifer_  
Fecha de Ingreso: junio-2006
Mensajes: 1.662
Antigüedad: 17 años, 11 meses
Puntos: 28
Respuesta: ayuda con un error

Entonces te recomiendo que comiences usando un buen estilo para programar, por ejemplo evita hacer:

Código:
...
if (f1 == NULL){  perror("Error:"); return -1;}
...
Es mucho mejor:
Código:
...
if (f1 == NULL)
{ 
   perror("Error:");
   return -1;
}
...
Yo regularmente uso el estilo Ansi para las llaves y la identación, pero hay quienes prefieren la K&R:
Código:
...
if (f1 == NULL) { 
   perror("Error:");
   return -1;
}
...
Incluso en algunos textos recomiendan que en vez de :

Código:
...
if (f1 == NULL)
...
hagas:
Código:
...
if (NULL == f1)
...
En caso de que te "comas" un "=" el compilador mostrará un error, pero esos ya son detalles.

Y cosas por el estilo, lo hacen más faćil de leer (sobre todo para otras personas distntas a quienes hicieron el código).

Saludos
__________________
Si crees que no tiene sentido, etonces probablemente lo tenga... :arriba:
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:08.