Witam, mam problem z funkcja malloc, ktora po wpisaniu wartosci do "id" przestaje alokowac pamiec.
Nie wiem kompletnie dlaczego tak sie dzieje.
To na razie program testowy, wiec nie jest zbytnio idiotoodporny, ale nie o to tu chodzi.
#include<stdio.h>
#include<ctype.h>
#include<float.h>
#include<stdlib.h>
struct robol
{
long id;
long placa;
char nazw[26];
char dzial[16];
struct robol * nastepny;
} *poczatek;
int jeden_wpis(struct robol *i);
char koniec[] = {' ', '\n', '\0'};
int main()
{
int konczyc;
struct robol *aktualny, *poprzedni, *pom;
if (poczatek!=NULL) return 1;
aktualny = malloc(sizeof(struct robol));
poczatek = aktualny;
printf("Adres pierwszego wpisu to %X\n", aktualny);
while (1)
{
konczyc = jeden_wpis(aktualny);
if (konczyc == 0) break;
poprzedni = aktualny;
aktualny = malloc(sizeof(struct robol));
poprzedni->nastepny = aktualny;
printf("Adres kolejnego adresu to %X\n", aktualny);
}
poprzedni->nastepny = NULL;
free(aktualny);
printf("Wpisane liczby to:\n");
for (pom = poczatek; pom != NULL; pom = (pom->nastepny))
{
puts("pom->nazw");
puts("pom->dzial");
printf("%d\n", pom->id);
printf("%d\n", pom->placa);
}
return 0;
}
int jeden_wpis(struct robol * i)
{
printf("Podaj id\n");
scanf("%d", i->id);
printf("Podaj zarobki\n");
scanf("%d", i->placa);
getchar();
printf("Podaj imie i nazwisko\n");
fgets(i->nazw, 25, stdin);
printf("Podaj dzial\n");
fgets(i->dzial, 15, stdin);
if (strcmp(i->nazw, koniec)==0) return 0;
return 1;
}