Witam. Otóż posiadam taki oto program, który przy próbie wpisania do bufora danych z bazy wywala mi się, w jaki sposób to rozwiązać ? Kolejna sprawa to nie wyłapuje mi funkcji gets ( po prostu pomija jakiekolwiek wczytywanie tekstu, jak by wgl tego gets nie było ) No i prosiłbym o ewentualne komentarze jak rozszerzyć ten program bądź tez w jaki prostszy sposób przeszukiwać elementy bazy. Pozdrawiam
#include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <string.h>
#include <cstdlib>
#include <malloc.h>
void noweslow();
void czysc();
void tlumacz();
int _tmain(int argc, _TCHAR* argv[])
{
int key;
int koniec;
koniec=0;
do
{
system("CLS");
printf("MENU:\n");
printf("Wprowadz nowe slownictwo[1]\n");
printf("Tlumacz[2]\n");
printf("Wyczysc baze[3]\n");
printf("Koniec[4]\n");
printf("Wybor:");
scanf("%d",&key);
switch(key)
{
case 1:
noweslow();
break;
case 2:
tlumacz();
break;
case 3:
czysc();
break;
case 4:
printf("\nDowidzenia !");
koniec=1;
break;
}
}while(!koniec);
_getch();
return 0;
}
void noweslow()
{
char slowo1[128];
char slowo2[128];
printf("\nPodaj slowo po ANG:");
scanf("%s",&slowo1);
printf("\nPodaj polski odpowiednik:");
scanf("%s",&slowo2);
FILE *baza;
baza = fopen("baza.txt", "ab");
if(baza)
{
fprintf(baza, "%s:%s:", slowo1,slowo2);
fclose(baza);
}
printf("\nDone!\n");
}
void czysc()
{
FILE *baza;
baza = fopen("baza.txt", "w");
printf("\nWyczyszczono!\n");
}
void tlumacz()
{
char zdanie[128];
FILE *baza;
int dlug;
baza = fopen("baza.txt", "r");
if(baza)
{
fseek(baza,0,SEEK_END);
dlug= ftell(baza);
fclose(baza);
}
char *n=NULL;
n = new char[dlug];
printf("Wprowadz slowo do przetlumaczenia:\n");
gets(zdanie);
baza = fopen("baza.txt", "r");
if(baza)
{
fscanf(baza, "%s", &n);
fclose(baza);
}
if(strstr(n, zdanie))
{
int i,temp;
int x=0;
for(i=0;i<dlug;++i)
{
if(zdanie[x]==n[i])
{
x++;
if(n[i+1]==':')
{
temp=i+2;
break;
}
}
}
printf("TLUMACZENIE: ");
for(i=temp;i<dlug;++i)
{
if(n[i]==':') break;
printf("%c",n[i]);
}
_getch();
}
else printf("Brak tego slowa w bazie !\n");
delete [] n;
}