Development C

#include 
#include 
/* DEBUG levels:
          0: no debug
          1: display byte read from source file
          2. display byte written to destination file
          3: display bytes read and bytes written
*/
#define DEBUG 2
int main(int argc, char *argv[])
{
  FILE *in, *out;
  unsigned char ch;
  /* see if correct number of command line arguments */
  if(argc!=4) {
    printf("Usage: code   ");
    exit(1);
  }
  /* open input file */
  if((in = fopen(argv[1], "rb"))==NULL) {
    printf("Cannot open input file.\n");
    exit(1);
  }
  /* open output file */
  if((out = fopen(argv[2], "wb"))==NULL) {
    printf("Cannot open output file.\n");
    exit(1);
  }
  while(!feof(in)) {
    ch = fgetc(in);
#if DEBUG == 1 || DEBUG == 3
    putchar(ch);
#endif
    ch = *argv[3] ^ ch;
#if DEBUG >= 2
    putchar(ch);
#endif
    if(!feof(in)) fputc(ch, out);
  }
  fclose(in);
  fclose(out);
  return 0;
}