ok nie to nie mam jednak inne pytanie
[code]
biezacy = glowny;
FILE * wpisz;
wpisz = fopen ("znajomi.txt", "w");
while(biezacy != NULL)
{
if(glowny == NULL)
glowny = biezacy;
//biezacy -> nast = NULL;
fprintf(wpisz, "\n%s\n%s\n%s\n%s\n%s\n%s",
biezacy -> imie, biezacy -> nazwisko, biezacy -> telefon,
biezacy -> mail, biezacy -> pesel, biezacy -> data);
biezacy = biezacy -> nast;
fclose(wpisz);
}
[/code]
mam taki kod i niestety do pliku zapisuje mi on wszystkie człony poza data urodzenia. Dla ostatniego znajomego ta data urodzenia jest zaipsana
[code]
void wczytaj(int licznik)
{
int i, plec;
FILE * wpisz;
wpisz = fopen ("znajomi.txt", "a");
biezacy = (struct znajomi *) malloc(sizeof(struct znajomi));
if(glowny == NULL)
glowny = biezacy;
biezacy -> nast = NULL;
system("cls");
printf("Podaj dane dla %d znajomego lub wcisnij zero albo enter na poczatku linii by zakonczyc\n\n", licznik + 1);
do{
printf("Podaj imie: ");
gets(biezacy -> imie);
}while(!(format_imie(biezacy -> imie)));
if(format_imie(biezacy -> imie) == 2)
{
system("cls");
menu_powrot();
}
do{
printf("Podaj nazwisko: ");
gets(biezacy -> nazwisko);
}while(!(format_nazwisko(biezacy -> nazwisko)));
do{
printf("Podaj telefon: ");
gets(biezacy -> telefon);
}while(!format_telefon(biezacy -> telefon));
do{
printf("Podaj mail: ");
gets(biezacy -> mail);
}while(!(format_mail(biezacy -> mail)));
do{
printf("Podaj PESEL: ");
gets(biezacy -> pesel);
}while(!(format_pesel(biezacy -> pesel)));
do{
printf("Podaj date urodzenia(dd.mm.rrrr): ");
gets(biezacy -> data);
}while(!(format_data(biezacy -> data, biezacy -> pesel)));
do{
printf("Podaj plec (0 - K 1 - M): ");
scanf("%d", &plec);
}while(!(format_plec(plec, biezacy -> pesel)));
fprintf(wpisz, "\n%s\n%s\n%s\n%s\n%s\n%s",
biezacy -> imie, biezacy -> nazwisko, biezacy -> telefon,
biezacy -> mail, biezacy -> pesel, biezacy -> data);
fclose(wpisz);
main ();
}[/code]
tak wyglada dodanie nowego znajomego do bazy, gdy dodam znajomego to przy wypisaniu listy znajomych czy tez przy wypisaniu calej bazy wypisuje ja dwukrotnie...
[code]
void lista_im_naz(int licznik)
{
biezacy = glowny;
while(biezacy != NULL)
{
printf("%d. %s %s\n", biezacy -> numer, biezacy -> imie, biezacy -> nazwisko);
biezacy = biezacy -> nast;
}
}[/code]
Tak wyglada wypisanie listy
Czy jest ktos w stanie pomoc?
i oczywiście wiem że gets jest zły jednak tak to robiłem od początku i dlatego to wygląda jak wygląda..
dla uaktualnienia
[code]
FILE * odczyt;
odczyt = fopen ("znajomi.txt", "r");
int licznik_zap = 0;
pomoc_2 = glowny;
do{
pomoc_2 = (struct znajomi *) malloc(sizeof(struct znajomi));
if(glowny == NULL)
glowny = pomoc_2;
else
poprz -> nast = pomoc_2;
pomoc_2 -> nast = NULL;
pomoc_2 -> numer = licznik_zap + 1;
fscanf(odczyt, "%s", pomoc_2 -> imie);
fscanf(odczyt, "%s", pomoc_2 -> nazwisko);
fscanf(odczyt, "%s", pomoc_2 -> telefon);
fscanf(odczyt, "%s", pomoc_2 -> mail);
fscanf(odczyt, "%s", pomoc_2 -> pesel);
fscanf(odczyt, "%s", pomoc_2 -> data);
//fscanf(odczyt, "%d", pomoc_2 -> plec);
licznik_zap++;
poprz = pomoc_2;
}while(fscanf(odczyt, "%c") != EOF);
fclose(odczyt);
[/code]
tak wyglada teraz wczytanie z pliku