Questo errore che sta nel titolo di questo post mi appare quando compilo il mio codice riguardante i cifrari monoalfabetici

ho scritto cosa devo fare qui http://forum.html.it/forum/showthrea...readid=1397017

il mio codice è il seguente

codice:
#include <stdio.h>
#include <stdlib.h>

#define MAX 1024

  void cifra();
  void decifra();
  void open_file();
  char alfa[]= {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
  char ct[MAX], plain[MAX], key[26], path[50], car;
  int i, j, k, max, risp, n;
  FILE *fd;



main()
{
  printf("\n cosa vuoi fare?? 1. Cifra - 2. Decifra\n");
  scanf("%d",&risp);
  open_file();
  switch(risp)
  {
	case 1: cifra(); break;
	case 2: decifra(); break;
	default: printf("\n hai inserito un valore non valido!"); exit(1);
  }
  return 0;
}

void open_file()
{
	printf("inserisci chiave:\t");
	gets(key);
	printf("inserisci path del file:\t");
	gets(path);
	fd=fopen(path,"rw");
	if(fd==NULL);
	{
		perror("\nErrore nell'apertura del file");
		exit(1);
	}
}

void cifra()
{
	if(!EOF(fd))
	{
		n=fgetc(fd);
		i++;
	}
	max=i;
	for(i=0;i<max;i++)
	{
		for(k=0;k<26;k++)
		{
			fscanf(fd,"%c",&car);
			if(car==alfa[k])
			{
			j=i;
			ct[i]=key[j];
			}
			if(car==' ');
				ct[i]='_';
		}
	}
	for(i=0;i<max;i++)
		printf("%c",ct[i]);
}
			
void decifra()
{
	if(!EOF(fd))
	{
		n=fgetc(fd);
		i++;
	}
	max=i;
	for(i=0;i<max;i++)
	{
		for(k=0;k<26;k++)
		{
			fscanf(fd, "%c",&car);
			if(car==key[j])
			{
			k=j;
			plain[i]=alfa[k];
			}
			if(car=='_');
				ct[i]=' ';
		}
	}
	for(i=0;i<max;i++)
		printf("%c",plain[i]);
}