[ Foro de C ]
Bueno, ante mi total desacuerdo del reparto de equipos ya que a sido totalmente injusto y antidemocratico, voi a exponer mi duda.
No tengo ni idea como cortar el fichero inicial, lo que viene siendo idea 0 pues eso. Algun iluminado que arroje un poco de luz a mi ofuscada mente.
(Se me va la pelota)
Un saludo
P.D.: Se puede usar punteros??
no se pueden usar, hay que usarlos xD. El ejercicio es muy parecido al que hicimos de copiar un archivo con punteros, con la diferencia de que en vez de poner malloc (longitud) tienes que poner en el sitio de longitud el tamanyo que te ha dicho el que usa el programa. Y con un for ir leyendo los cachos de ese mismo tamaño y guardandolos en 1 fichero diferente cada vez (pista: el nombre del fichero se hace con sprintf y cambiando la extension con el contador del for).
Ya no digo mas.
PD: al leer el tamanyo me da un error default noseke y no es por el ampersan, he probado con scanf("%ld%c",&tamanyo);Â y usando gets(temporal); sscanf(temporal,"%ld",&tamanyo); y me dice que no va ni patras. a ver si alguien se imagina porque puede ser.
Mi duda en el programa es la siguiente:
El programa que he hecho yo pide el nombre del fichero, lo lee, pide el tamaño y to eso. Luego con un for voy recorriendo los bytes, en fin que me compila.
Pero a la hora de ejecutarlo se me cuelga el ordenador.
Alguien sabe por que???
Un saludo
A ver el codigo fuente es este, me falta poner los sprintf y algun detalle mas:
#include <stdio.h>
#include <stdlib.h>
FILE* fichero1;
FILE* fichero2;
char nombre1[100];
char nombre2[100];
int tamanyo;
long resultado;
long longitud;
int numeroPartes;
int i;
char *buffer;
int main()
{
   numeroPartes=(longitud/tamanyo)+1;
printf("Dime el nombre del fichero: ");
scanf("%s",&nombre1);
printf("Dime el tamanyo de las partes en que divido el fichero: ");
scanf("%d",&tamanyo);
fichero1=fopen(nombre1,"rb");
 if(fichero1==NULL)
 {
 printf("Error, no existe el fichero\n");
 exit(1);
 }
 else
 fseek(fichero1,0,SEEK_END); /*Vas al final del fichero */
 longitud=ftell(fichero1);
 fseek(fichero1,0,SEEK_SET); /*Vas al principio del fichero */
 buffer=(char*)malloc(tamanyo);
  if(buffer==NULL)
  {
  printf("Se siente, no hay suficiente espacio\n");
  exit(2);
  }
  for(i=1;i<=numeroPartes;i++)
       {
 resultado=fread(buffer,1,tamanyo,fichero1);
  fclose(fichero1);
 Â
 puts("Dime el nombre del fichero donde guardarlo: ");
 gets(nombre2);
 fwrite(buffer,resultado,1,fichero2);
       }
       getch();
}
A ver si me podeis ayudar.
Un saludo.
creo ke tengo ke kitar la segunda parte ke pide otro nombre del fichero, pero esto es solo de prueba, si alguien saca algo ke me lo diga.
Un saludo
Re: Practicas agresivas | |
 | Yo lo se. Windows es una castaña. Usa linux |
no es por nada pero mi programa en linux peta y en windows va k te cagas sin cambiar codigo ni nada
Vale, gracias por la informacion .
Mi duda es: Ahora que hay que hacerlo en bloques, ¿eso como se hace?.
El que va de byte a byte me va, pero esque en bloques no se ni como comenzar. Poner el pseudocodigo o algo de este ejercicio. Tambien estoy abierto a todas las posibles soluciones que deis
Un saludo.
Yo estoy indignado con la nota de mi segundo ejercicio. No entiendo porque se me quita un punto porque me cree un fichero en blanco. Es una injusticia en toda regla . Ademas, el programa hacia lo que debia, y no entiendo porque tengo un misero 9. Si alguien me lo explica....
Un saludo.
P.D Yo solo expreso mi opinion, luego no quiero follones de ningun tipo.
Un saludo
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)