ho iniziato oggi a leggere qualcosa sul c ed è il mio primo approccio alla programmazzione quindi premetto che sono completamente ignorante in questo campo

dopo migliardi di errori sono riuscito a compilare questo codice (tra laltro copiato quasi completamente da internet) con gcc
dovrebbe leggermi un file nella stessa cartella del' eseguibile e crearmene una copia in codice binario (molto probabilmente ho sbagliato tutto) solo che quando lancio l'eseguibile con./ mi dice bus error e mi crea un kfileuscita vuoto.
Qualcuno mi puo aiutare? Vi ringrazio in anticipo per le risposte.


#include <stdio.h>

#define kfileingresso "input.txt"
#define kfileuscita "output.dat"



int main (void)

{


int ca[6];

FILE *fp_in;

FILE *fp_out;

int i;



fp_in = fopen ("kfileingresso", "rb");



fp_out = fopen ("kfileuscita", "wb");



while (1)

{

i = fread (ca, 2000, 6, fp_in);


if (i == 0)

{
printf("bo");

break;
}



fwrite (ca, 1000, 6, fp_out);



}



fclose (fp_in);

fclose (fp_out);



return 0;

}