Trovato il problema: nelle fopen hai messo delle virgolette di troppo; non deve essere così
codice:
fp_in = fopen ("kfileingresso", "rb");
ma così
codice:
fp_in = fopen (kfileingresso, "rb");
, visto che le virgolette le hai già specificate nei #define all'inizio. In ogni caso ti consiglio di usare come nomi di macro solo nomi tutti maiuscoli come da convenzione universalmente diffusa, in modo da poterle riconoscere al volo. Quindi il tuo programma diventa così:
codice:
#include <stdio.h>
#define KFILEINGRESSO "input.txt"
#define KFILEUSCITA "output.dat"
int main (void)
{
unsigned char buffer[1024];
FILE *fp_in;
FILE *fp_out;
int readBytes=-1;
int exitCode=0;
fp_in = fopen (KFILEINGRESSO, "rb");
if(fp_in==NULL)
{
fprintf(stderr,"Impossibile aprire il file d'ingresso.\n");
return 1;
}
fp_out = fopen (KFILEUSCITA, "wb");
if(fp_out==NULL)
{
fprintf(stderr,"Impossibile aprire il file d'uscita.\n");
return 2;
}
for(;;)
{
readBytes = fread (buffer, 1, sizeof(buffer), fp_in);
if(readBytes == 0)
{
puts("Copia terminata.");
break;
}
fwrite(buffer, 1, readBytes, fp_out);
if(ferror(fp_out))
{
fprintf(stderr,"Errore di scrittura.\n");
exitCode=3;
break;
}
}
fclose (fp_in);
fclose (fp_out);
return exitCode;
}
.