#include <stdio.h>
#include <stdlib.h>
int main (){
int array[30] = {10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39};
int n, i;
//4 punteros a file. Nos viene bien para trabajar con bucles y hacer mas pequeño el código XD
FILE *f[4];
//abrimos el fichero que vamos a leer
if ( (f[0] = fopen( "fichero.dat", "w+b" )) == 0 ){ // atento a los modos de apertura W+b destruye el anterior archivo al sobreescribirlo. La b es de binario y la plus(+) añade la opcion de lectura, pero al escribir debemos volver al principio con rewind() o fseek()
printf ("fichero.dat no se abrio");
}
//guardare los enteros de arriba en el archivo binario del contrario no hay nada que leer. XD
fwrite(array, sizeof(array[0]), 30, f[0]);
char archivo[12];
char indice = '1';
//volvemos a poner el puntero al inicio
rewind(f[0]);
for ( i = 1; i < 4; i++ ) {
//leemos 10 enteros desde el primer fichero
fread ( array, sizeof ( array[0] ), 10, f[0] );
//preparamos el txto que va tener cada fichero
sprintf (archivo,"%s%c%s", "archal", indice++, ".dat" ); //sprintf funciona como printf pero envia el texto a una cadena de caracteres en vez de la pantalla. junta 3 cosas en una sola cadena que será el nombre de los 3 archivos.
//abrimos el fichero con el nombre que montamos con sprintf
if ( ( f[i] = fopen ( archivo, "w+b" ) ) == 0 ) {
printf ( "archal%d.dat no se abrio", i+48 );
}
//guardamos el texto en elfichero
fwrite ( array, sizeof ( array[0] ), 10, f[i] );
}
//La prueba de que estan aqui:
for ( i = 1; i < 4; i++ ){
rewind(f[i]); //volvemos los punteros de cada archivo al principio antes de leer
fread(array, sizeof( array[0] ), 10, f[i]); //leemos 10 enteros de cada un de los nuevos ficheros que creamos
//Imprimimos
n = 0;
printf("Archivo %d: %d", i, array[n]);
for (n++; n < 10; n++ ){
printf(", %d", array[n]);
}
printf("\n\n");
}
//cerramos todos los archivos abiertos XD
fclose(f[0]);
fclose(f[1]);
fclose(f[2]);
fclose(f[3]);
// ya ta ¬(°_o)/¯
getchar();
return 0;
}