Witam
Mam taki mały problem. Mam do napisania słownik w ansi c. Mam juz napisany tylko nie moge sie pozbyc bledow ktore wyskakuja podczas kompilacji pod gcc (djgpp). Bylby ktos tak mily i pomogl mi znaleŹĆ te bledy?? Bylbym bardzo wdzieczny, sam juz czesc bledow wyeliminowalem, ale reszty jakos nie moge sie pozbyc. A oto kod zrodlowy programu.


#include <stdlib.h>
#include <stdio.h>
#include <string.h>
void dodaj_slowo();
void szukaj_slowo();
void menu();
void print();
char szukaj(int);

typedef struct lista
{
   lista  *pierwszy, *nowy, *y, *w, *pom, *ostatni, *nastepny, *poprzedni;
   int lp;
   char slowo_x[50];
   char plik[] = "slowka.txt";
   char slowo_szukane[50];
   int licz_blad=0;
   
}lista;


void main()
{
   char c;
   menu();
   for (;;)
     {
	printf ("------------------------------------------");
	printf ("\nWybierz >");
	for (;;)
	  {  
	     c = getchar();
	     if (c == '1' || c=='2' || c =='q' || c == 'Q')
	       break;
	  }
	 getchar();
	menu();
	switch (c)
	  {
	   case '1': dodaj_slowo();
	     break;
	   case '2': szukaj_slowo();
	     break;
	   case 'q':exit(1);
	   case 'Q':exit(1);
	  }
     }
}

void dodaj_slowo()
{
   FILE *file;
   char slowo_a[30], slowo_p[30];
   int i;
   printf ("Angielski   >");
   gets(slowo_a);
   for (i=1; i< strlen(slowo_a); i++)
     if ( slowo_a[i] == ' ')
       slowo_a[i] = '_';
   
   printf ("Polski      >");
   gets(slowo_p);
   for (i=1; i< strlen(slowo_p); i++)
     if ( slowo_p[i] == ' ')
       slowo_p[i] = '_';
   file = fopen (plik, "a");
   fprintf (file, "%s %s\n", slowo_a, slowo_p);
   fclose(file);
   menu();
}



void szukaj_slowo()
{
   char slowo[50], slowo_a[50], slowo_p[50], l[4];
   int k=0, z=0, i, dl = strlen(slowo_szukane);
   FILE *file;
lista *pierwszy;   
pierwszy = NULL;
   printf ("------------------------------------------\n");
   printf ("Podaj szukane slowo >");
   gets (slowo_szukane);
   for (i=1; i< strlen(slowo_szukane); i++)
     if ( slowo_szukane[i] == ' ')
       slowo_szukane[i] = '_';
   file = fopen (plik, "r");
   
   if (slowo_szukane[dl-1] == '*')
     {
	licz_blad=0;
	menu();
	printf ("Wszystkie slowa podobne w slowniku:\n");
	printf ("------------------------------------------\n");
	while (fscanf(file, "%s", slowo) != EOF)
	  {
	     if(strncmp(slowo, slowo_szukane, dl-1) == 0 )
	       {
		  
		  //printf ("%s\n", slowo);
		  k++;
		  nowy = new lista;
		  if (pierwszy == NULL)
		    {
		       nowy->slowo_x=slowo;
		       nowy->lp=1;
		       pierwszy = ostatni = nowy;
		       pierwszy->nastepny=ostatni;
		       ostatni->poprzedni=pierwszy;
		       ostatni->nastepny = NULL;
		       pierwszy->poprzedni=NULL;
		    }
		  else
		    {
		       nowy->slowo_x=slowo;
		       nowy->lp=k;
		       
		       ostatni->nastepny=nowy;
		       nowy->poprzedni=ostatni;
		       ostatni=nowy;
		       ostatni->nastepny=NULL;
		    }
	       }
	  }
	fclose(file);
	if (pierwszy != NULL)
	  {
	     print();
	     printf ("------------------------------------------\n");
	     printf("Wcisnij 1 - %d aby wybrac slowo >",k);
	     gets(l);
	     z=atoi (l);
	     szukaj(z);
	     file = fopen (plik, "r");
	     while (fscanf (file, "%s%s", slowo_a, slowo_p) != EOF)
	       {
		  if ( strcmp( slowo_a, slowo_szukane) == 0)
		    {
		       for (i=1; i<strlen(slowo_p); i++)
			 if(slowo_p[i] == '_')
			   slowo_p[i] = ' ';
		       menu();
		       printf ("------------------------------------------\n");
		       printf ("Szukales    > %s\n", slowo_szukane);
		       printf ("Tlumaczenie > %s\n", slowo_p);
		    }
		  if (strcmp( slowo_p, slowo_szukane) == 0)
		    {
		       for (i=1; i<strlen(slowo_a); i++)
			 if(slowo_a[i] == '_')
			   slowo_a[i] = ' ';
		       menu();
		       printf ("------------------------------------------\n");
		       printf ("Szukales    > %s\n", slowo_szukane);
		       printf ("Tlumaczenie > %s\n", slowo_a);
		    }
	       }
	     if(pierwszy != NULL)
	       {
		  y=ostatni;
		  while(y)
		    {
		       pom=y;
		       pom->nastepny=NULL;
		       delete y;
		       y=pom->poprzedni;
		    }
	       }
	  }
     }
   else
     while (fscanf (file, "%s%s", slowo_a, slowo_p) != EOF)
       {
	  if ( strcmp( slowo_a, slowo_szukane) == 0)
	    {
	       for (i=1; i<strlen(slowo_p); i++)
		 if(slowo_p[i] == '_')
		   slowo_p[i] = ' ';
	       menu();
	       printf ("------------------------------------------\n");
	       printf ("Szukales    > %s\n", slowo_szukane);
	       printf ("Tlumaczenie > %s\n", slowo_p);
	       k++;
	    }
	  if (strcmp( slowo_p, slowo_szukane) == 0)
	    {
	       for (i=1; i<strlen(slowo_a); i++)
		 if(slowo_a[i] == '_')
		   slowo_a[i] = ' ';
	       menu();
	       printf ("------------------------------------------\n");
	       printf ("Szukales    > %s\n", slowo_szukane);
	       printf ("Tlumaczenie > %s\n", slowo_a);
	       k++;
	    }
       }
   if (k == 0)
     {
	menu();
	licz_blad++;
	if (licz_blad <= 1 )
	  {
	     printf ("------------------------------------------\n");
	     printf ("Brak szukanego slowa !\n");
	  }
	else
	  {
	     printf ("------------------------------------------\n");
	     printf ("Niestety znowu brak slowa, sproboj\nzastosowac gwiazdke:\n");
	     printf ("np: "mam*" - spowoduje wyswietlenie wyrazow\nzaczynajacych sie na "mam"\n");
	  }		     
     }
   if (k != 0)
     fclose (file);
}

void print()
{
   int i;
   char buffer[50];
   lista *w, *pierwszy;
   *w=pierwszy;
   
   while(w)
     {
	buffer=w->slowo_x;
	for (i=1; i<strlen(buffer); i++)
	  if(buffer[i] == '_')
	    buffer[i] = ' ';
	printf("%d-%s\n",w->lp, buffer);
	w=w->nastepny;
     }
}
char szukaj(int m)
{
   typedef struct lista listka,
   w=lista.pierwszy;
   while(*w)
     {
	if (w->lp == m)
	  slowo_szukane=w->slowo_x;
	w=w->nastepny;
     }
   return *slowo_szukane;
}

void menu()
{
   printf ("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
   printf ("     +-----------------+\n");
   printf ("     | 1- dodaj slowo  |\n");
   printf ("     | 2- szukaj slowa |\n");
   printf ("     | Q- wyjscie      |\n");
   printf ("     +-----------------+\n");
   printf ("\n\n");
}