Página 1 de 1

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

Publicado: 06 Ago 2011, 21:49
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);
   

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

Publicado: 06 Ago 2011, 22:59
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.

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

Publicado: 06 Ago 2011, 23:40
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...

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

Publicado: 07 Ago 2011, 13:45
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).

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

Publicado: 07 Ago 2011, 20:03
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 :)

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

Publicado: 07 Ago 2011, 20:07
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!

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

Publicado: 07 Ago 2011, 20:18
por ~Rdavid~
:oki:

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

Publicado: 07 Ago 2011, 22:01
por Yn$an€
Oye, que vas a hacer que me ponga colorado! Gracias a tí, y bienvenido.