elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Alguien vé el error...
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Alguien vé el error...  (Leído 1,386 veces)
Traxcer

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Alguien vé el error...
« en: 19 Agosto 2013, 13:17 pm »

He compilado este código que implementa una función para copiar archivos, pero no me funcióna y ya me estoy volviendo loco y no le veo el fallo. A ver si me podeís echar un cable alguno.

Un saludo.

CODIGO::

#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>

int copiaf(char *f1, char* f2){
  int fd_leer;
  int fd_escribir;
  ssize_t leido;
  ssize_t escrito;
  char bufi[20];

  if(fd_leer = open(f1,O_RDONLY)< 0){
    perror ("Error en Lectura:");
    exit (-1);
  }
  if(fd_escribir = open(f2,O_WRONLY|O_TRUNC|O_CREAT,666) < 0){
    perror("Error en Escritura:");
    exit (-1);
  }
  ////////////
  // LECTURA y ESCRITURA
  ////////////

  while (leido = read(fd_leer,bufi,sizeof bufi)>0)
  {
  printf ("Leidos: %d bytes\n",leido);
  escrito = write(fd_escribir,bufi,sizeof bufi);
  }
  if (leido == 0) {
    printf("Fin del Fichero");
    close(fd_leer);
    close(fd_escribir);
    exit (-1);
  }
  else if (leido < 0){
  perror("Lectura:");
  }
}



int main(int argc, char **argv) {
  int resultado;
  if (argc != 3){
    printf ("Usar: %s origen destino\n\n",argv[0]);
    exit (-1);
  }
  if ((resultado= copiaf (argv[1], argv[2]))<0);
    printf ("Error en la copia");
return 0;
}


« Última modificación: 19 Agosto 2013, 13:23 pm por Traxcer » En línea

Alien-Z

Desconectado Desconectado

Mensajes: 177


C++ Programmer


Ver Perfil
Re: Alguien vé el error...
« Respuesta #1 en: 19 Agosto 2013, 15:27 pm »

Muy sencillo:

La variable leido es de tipo ssize_t e intentas imprimirla como un especificador de formato para enteros:

Código
  1. printf ("Leidos: %d bytes\n",leido);

Debes utilizar el especificador de formato "%zd":

Código
  1. printf ("Leidos: %zd bytes\n",leido);

Un saludo.


En línea

do-while


Desconectado Desconectado

Mensajes: 1.276


¿Habra que sacarla de paseo?


Ver Perfil
Re: Alguien vé el error...
« Respuesta #2 en: 19 Agosto 2013, 15:31 pm »

Y otra cosa.

Tienes una función que no devuelve ningún valor, a pesar de que indicas que debería devolver un entero...

¡Saludos!
En línea

- Doctor, confundo los números y los colores.
- Vaya marrón.
- ¿Marrón? ¡Por el culo te la hinco!
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Alguien me dice el error? (solucionado)
Programación C/C++
;c1v!c 2 2,928 Último mensaje 8 Junio 2011, 21:41 pm
por ;c1v!c
Alguien conoce este error !!!
Windows
TrashAmbishion 2 4,149 Último mensaje 23 Febrero 2012, 16:24 pm
por lobitox
Alguien ve el error en este programa
Programación C/C++
do-while1 5 2,439 Último mensaje 17 Abril 2013, 02:26 am
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines