witam,
jestem w trakcie robienie programu opartego na bazie danych. Chodzi mi o konkretną rzecz:
to jakby główne menu:
switch(wybor) {
case '1':
printf("Zapisujesz nowa osobe do biblioteki:\n");
dodaj();
break;
case '2':
printf("Dodajesz wyporzyczenie do konta:\n");
break;
case '0':
printf("Koniec programu\n");
straznik = 0;
break;
default:
printf("zostala wybrana zla opcja, sprobuj jeszcze raz.\n");
break;
}
a tu jest funkcja dodaj:
void dodaj(void) {
struct dane {
char imie[20];
char nazwisko[20];
char miasto[30];
char ulica[50];
char nrdomu[50];
} info;
FILE *plik;
plik = fopen("plik.txt", "a");
if(plik == NULL) {
printf("nie mozna otworzyc pliku\n");
} else {
printf("plik pomyslnie otwarty\n");
}
char line[50];
printf("podaj imie: ");
fgets(line, sizeof(line), stdin);
sscanf(line, "%s", info.imie);
printf("podaj nazwisko: ");
fgets(line, sizeof(line), stdin);
sscanf(line, "%s", info.nazwisko);
printf("adres do korenspodencji: miasto: ");
fgets(line, sizeof(line), stdin);
sscanf(line, "%s", info.miasto);
printf("podaj ulica: ");
fgets(line, sizeof(line), stdin);
sscanf(line, "%s", info.ulica);
printf("podaj nr domu: ");
fgets(line, sizeof(line), stdin);
sscanf(line, "%s", info.nrdomu);
fprintf(plik, "%s %s %s %s %s\n", info.imie, info.nazwisko, info.miasto, info.ulica, info.nrdomu);
fclose(plik);
}
i jest taki problem, gdy uruchamiam program w konsoli, i wybieram przycisk '1' czyli dodanie nowego jakby użytkownika, plik się otwiera (wyświetla się napis z if'a), jednak później pojawia się coś takiego:
podaj imie: podaj nazwisko:
tak jakby w ogóle nie było tak tego fgetsa pobierającego imię.
A najlepsze jest to że gdy przekopiowałem samą funkcję to działała (konsola czekała aż wpiszę imię).
Macie jakiś pomysł jak to rozwiązać?
EDIT: udało mi się to ogranąć (bardziej to mojemu koledze :P ): rozwiązanie jest następujące: trzeba powiększyć tablicę która znajduje się przed swichem i która była przeznaczona na to żeby z niej wyłuskać sscanfem numer opcji, jaka ma być wykonana. Był rozmiar [2], co jeśli fgetsem wpisywało się tam liczbę po prostu nie działało - kolega powiedział że prawdopodobnie fgets nie radził sobie z wpisaniem tam jeszcze '\n'. Zwiększyłem tablicę do [3] i działa. :)
pozdrawiam