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;
}
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
0