Es eso?
Código C:
Ver original#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
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++ ){
}
}
//cerramos todos los archivos abiertos XD
// ya ta ¬(°_o)/¯
return 0;
}
Para leer mas sobre las funciones:
http://www.c.conclase.net/ficheros/?cap=002