Ayuda para copiar archivos en C Urgente!!!!!! [SOLUCIONADO]

Moderadores: Kravenbcn, largeroliker, fidelcastro, cerealkiller, pspCaracas, dark_sasuke, m0skit0, LnD, ka69, zacky06

Responder
Avatar de Usuario
ElCiberNauta42
Enteradillo
Enteradillo
Mensajes: 29
Registrado: 04 Ago 2011, 03:45
PSN ID: CiberNauta42
Ubicación: Argentina
Contactar:

Ayuda para copiar archivos en C Urgente!!!!!! [SOLUCIONADO]

Mensaje por ElCiberNauta42 »

Hola gente, como pueden notar soy nuevo en el foro, y tengo una duda, estoy empezando en el desarrollo en C, y aún estoy asimilando códigos y demás, pero me eh dado cuenta que no ahí un código o una función especifica para copiar archivos de una ubicación a otra, y era justo lo que necesitaba, se que es necesario abrir un bucle que lea el archivo y lo baya copiando byte por byte a medida que lo va leyendo, pero a la hora de utilizar este código me topo con esta linea que evita que se copie el archivo en su totalidad:

Código: Seleccionar todo

char buffer[128*1024]


eh intentado con cambiar el "128" que es la cantidad de byte que lee, pero si aumento el buffer a mas de 255 la PSP se crashea al intentar realizar la acción, así que les pido a todos lo coders que me ayuden urgentemente.
Aquí les dejo el código completo que utilice:


Código: Seleccionar todo

    int bytesread;
    char buffer[128*1024];//Buffer de datos para 131072 bytes
    char *READPATH="ms0:/testcopy.txt";
    char *WRITEPATH="ms0:/testcopied.txt";
    SceUID fd = sceIoOpen(READPATH, PSP_O_RDONLY, 0777);
    bytesread = sceIoRead(fd,buffer,sizeof(buffer));
    sceIoClose(fd);
    fd = sceIoOpen(WRITEPATH, PSP_O_WRONLY|PSP_O_CREAT, 0777);
    sceIoWrite(fd,buffer,bytesread);
    sceIoClose(fd);
   
Última edición por ElCiberNauta42 el 07 Ago 2011, 20:14, editado 1 vez en total.
ElCiberNauta42:

File Mananger

PSP-ODA

6.XX Installer

Avatar de Usuario
Yn$an€
Desarrollador
Desarrollador
Mensajes: 258
Registrado: 11 Feb 2011, 21:44

Re: Ayuda para copiar archivos en C Urgente!!!!!!

Mensaje por Yn$an€ »

Como bien dices, es necesario crear un bucle. Se trataría de que mientras queden datos que leer del archivo de origen, estos se copiasen al buffer para luego escribirlos en el archivo de destino.

Código: Seleccionar todo

    int bytesread;
    char buffer[128*1024];
    char *READPATH="ms0:/testcopy.txt";
    char *WRITEPATH="ms0:/testcopied.txt";
    SceUID fs = sceIoOpen(READPATH, PSP_O_RDONLY, 0777);
    SceUID fd = sceIoOpen(WRITEPATH, PSP_O_WRONLY|PSP_O_CREAT, 0777);
while (bytesread = sceIoRead(fs,buffer,sizeof(buffer)) > 0)
    sceIoWrite(fd,buffer,bytesread);
sceIoClose(fs);
sceIoClose(fd);

Espero que te sirva.
Y recuerda que la PSP no es un buen lugar para aprender a programar, sin acritud.
... after all, we're all alike.

Avatar de Usuario
ElCiberNauta42
Enteradillo
Enteradillo
Mensajes: 29
Registrado: 04 Ago 2011, 03:45
PSN ID: CiberNauta42
Ubicación: Argentina
Contactar:

Re: Ayuda para copiar archivos en C Urgente!!!!!!

Mensaje por ElCiberNauta42 »

Hola, gracias por responder, pero el codigo que me distes al queres compilar me tira un Waring:

Imagen


Ademas cuando utilizo la funcion no copia mas de 4 bytes, si me puedes ayudar...

Ademas creo que olvide mencionar que necesito copiar un archivo de mas de 1mb...
ElCiberNauta42:

File Mananger

PSP-ODA

6.XX Installer

Avatar de Usuario
Yn$an€
Desarrollador
Desarrollador
Mensajes: 258
Registrado: 11 Feb 2011, 21:44

Re: Ayuda para copiar archivos en C Urgente!!!!!!

Mensaje por Yn$an€ »

Ok. Ya veo. Te dice que se necesitan unos paréntesis alrededor de la variable que se emplea en la comparación. Ponlo así mejor:

Código: Seleccionar todo

    int bytesread;
    char buffer[128*1024];
    char *READPATH="ms0:/testcopy.txt";
    char *WRITEPATH="ms0:/testcopied.txt";
    SceUID fs = sceIoOpen(READPATH, PSP_O_RDONLY, 0777);
    SceUID fd = sceIoOpen(WRITEPATH, PSP_O_WRONLY|PSP_O_CREAT, 0777);
    bytesread = sceIoRead(fs,buffer,sizeof(buffer));
while (bytesread > 0){
    sceIoWrite(fd,buffer,bytesread);
    bytesread = sceIoRead(fs,buffer,sizeof(buffer));
}
sceIoClose(fs);
sceIoClose(fd);


Así debería de funcionar. Y copiar todo.

-- Doble Post --

Si no, fíjate en los valores que retorna con un printf (su equivalente en PSP, vamos).
... after all, we're all alike.

Avatar de Usuario
~Rdavid~
Experto
Experto
Mensajes: 965
Registrado: 12 Nov 2009, 17:29
Ubicación: Costa Rica

Re: Ayuda para copiar archivos en C Urgente!!!!!!

Mensaje por ~Rdavid~ »

Prueba haciendo algo así:

Código: Seleccionar todo

#include <stdio.h>


FILE *fichOrg, *fichDest;
   int bytesread = 0;
   char buffer[128*1024];
   char *orgpath = "ms0:/testcopy.txt";
   char *destpath= "ms0:/testcopied.txt";
   fichOrg = fopen(orgpath, "rt");
   fichDest = fopen(destpath, "wt");
   while (! feof(fichOrg) )
   {
      bytesread = fread( buffer, 1, sizeof(buffer), fichOrg);
      fwrite(buffer, 1, bytesread, fichDest);
   }
   fclose(fichOrg);
   fclose(fichDest);

   if(bytesread>0)
      pspDebugScreenPrintf("Copiado con exito\n");


Probado con un archivo de 1.7mb desde una psp obviamente :)
Última edición por ~Rdavid~ el 07 Ago 2011, 20:16, editado 1 vez en total.
Imagen

Avatar de Usuario
ElCiberNauta42
Enteradillo
Enteradillo
Mensajes: 29
Registrado: 04 Ago 2011, 03:45
PSN ID: CiberNauta42
Ubicación: Argentina
Contactar:

Re: Ayuda para copiar archivos en C Urgente!!!!!!

Mensaje por ElCiberNauta42 »

Yn$an€ eres un genio!!!
Ya ah funcionado!
Te lo agradezco muchísimo!!! Ojala algún día pueda ayudar en el foro igual que tu..! te estoy en deuda.
:-D :-D :-D
A ti también muchas gracias ~Rdavid~ pero Yn$an€ respondió primero, igualmente les agradezco el simple hecho de haberse preocupado para ayudarme a solucionar este problema!
ElCiberNauta42:

File Mananger

PSP-ODA

6.XX Installer

Avatar de Usuario
~Rdavid~
Experto
Experto
Mensajes: 965
Registrado: 12 Nov 2009, 17:29
Ubicación: Costa Rica

Re: Ayuda para copiar archivos en C Urgente!!!!!! [SOLUCIONA

Mensaje por ~Rdavid~ »

:oki:
Imagen

Avatar de Usuario
Yn$an€
Desarrollador
Desarrollador
Mensajes: 258
Registrado: 11 Feb 2011, 21:44

Re: Ayuda para copiar archivos en C Urgente!!!!!! [SOLUCIONA

Mensaje por Yn$an€ »

Oye, que vas a hacer que me ponga colorado! Gracias a tí, y bienvenido.
... after all, we're all alike.

Responder