Dev - C++ - Dividir un fichero en en varios más pequeños.

 
Vista:

Dividir un fichero en en varios más pequeños.

Publicado por Thin Taler (1 intervención) el 12/02/2010 01:18:14
Hola a todos y gracias de antemano.

Mi problema es el siguiente, tengo que crear un programa que divida un fichero de texto en varios más pequeños.

Como podreis ver a continuacion, el proceso parece que funciona, pero lo cierto es que cuando miro en la carpeta de destino de los nuevos ficheros solo me ha creado un nuevo fichero, y además sin contenido. Esta carpeta es la misma que donde guardo el programa.

Por otra parte, me sucede que cuando introduzco el numero de bits para cada fichero tengo que pulsar dos veces 'enter'. Supongo que además de esto tendré más fallos.

Si pudierais ayudarme lo agradecería porque son ya días y no doy con ello.
----------------------------------------------------------------------------------------------------------------------------
#include<stdio.h>
#include<string.h>
#include<math.h>

#define MAX 50
#define MAX2 10

int main(){

FILE *f, *ftem;

char nom[MAX], aux[MAX2], aux2;

int tam, tam2, i;

float partes;

strcpy(nom, "probando_hacha.txt");

f=fopen(nom, "rb");

if(f==NULL){

puts("El fichero no existe o no tienes permisos");
return 0;
}

fseek(f, 0, SEEK_END);

tam=ftell(f);

printf(" El tamanio del fichero es de %d bits\n", tam);

printf("Cuantos bits quiere en cada fichero?.\n");

scanf("%f", &tam2);

partes= ceil(tam*1.0/tam2);

for(i=1; i<=partes; i++){

sprintf(aux, "%s.%d", nom, i);


ftem=fopen(aux, "wb");

while(!feof(f)){

fread(&aux2, sizeof(char), 1, f);

fwrite(&aux2, sizeof(char), 1, ftem);

if(feof(f)) break;
}
fclose(ftem);
}
fclose(f);

fflush(stdin);
getchar();
return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Dividir un fichero en en varios más pequeños.

Publicado por a (3 intervenciones) el 07/04/2010 20:02:33
fseek( f, 0, SEEK_END ); // <--- va al final del archivo.

tam=ftell( f ); // pide la posicion.

fseek( f, 0, SEEK_SET ); // <--- vuelve al principio. ***
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar