ErrorDeSintaxis

Pequeños fragmentos de código fuente en distintos lenguajes de programación, agrupados por categorías.

Puedes buscar entre los fuentes existentes, o aportar los tuyos.

C: Partir un fichero en varios bloques

Partir un fichero en varios bloques de un tamaño prefijado

Lenguaje: C (compilador: Turbo C)

Categoría: Ficheros

/* Fuente procedente de ErrorDeSintaxis.es */
/* Partir un fichero en varios bloques de un */
/*  tamaño prefijado */
/* Compilador: Turbo C */
/* Nivel: Básico */
/* Disponible desde 17/08/2011 */
/* Aportado por Nacho */
/* Autor original: Nacho Cabanes */
#include <stdio.h>
#include <stdlib.h>
 
int main() {
  FILE *entrada, *salida;
  char nombreEntrada[200], nombreSalida[200];
  long contador=0,
    fichActual=0,
    tamanyo;
  char byteLeido;
 
  printf("Nombre del fichero?");
  gets(nombreEntrada);
  printf("Tamanyo de cada bloque?");
  scanf("%ld",&tamanyo);
 
  entrada = fopen(nombreEntrada, "rb");
  if (salida == NULL) {
    puts("No se ha podido crear!");
    exit(1);
  }
 
  sprintf(nombreSalida, "%s.%ld", nombreEntrada, fichActual);
  salida = fopen(nombreSalida, "wb");
  if (salida == NULL) {
    puts("No se ha podido crear!");
    exit(2);
  }
 
  while (!feof(entrada)) {
    byteLeido = fgetc(entrada);
    fputc(byteLeido, salida);
    contador++;
    if (contador == tamanyo) {
      fclose(salida);
      sprintf(nombreSalida, "%s.%ld",
        nombreEntrada, fichActual);
      salida = fopen(nombreSalida, "wb");
      if (salida == NULL) {
        puts("No se ha podido crear!");
        exit(2);        
      }
      contador = 0;
      fichActual ++;
    }
  }
  return 0;
}