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");
}