Błąd podczas kopiowania do struktury

0
   for(int i=1; i<=x; i++)
    {
        dana plik;
        printf("%d. element: \n", i);
        printf("Podaj nazwe elementu: ");
        char *str;
        scanf("%s", str);
        strcpy(plik.nazwa, str);
        plik.id = i;
        dodaj(poczatek, plik);
    }

Wywala się przy strcpy. Dlaczego?

4

wywala się już tutaj:

        char *str;
        scanf("%s", str);

Bo próbujesz wpisać coś do pamięci pokazywanej przez wskaźnik str a nigdzie nie dokonałeś alokacji pamięci. Ten wskaźnik pokazuje sobie "gdzieśtam" a ty próbujesz w to miejsce w pamięci coś wpisać. System operacyjny tego nie lubi...
A jak w tej strukturze zrobiłeś równie sprytnie, tzn zamiast tablicy char dałeś goły wskaźnik to nawet nie będę nic mówił...

0

zastanów się nad:

for(int i=1;i<=x;++i)
  {
   dana plik;
   printf("%d. element: \n", i);
   printf("Podaj nazwe elementu: ");
   scanf("%63s",plik.nazwa); // tu mniemam że nazwa została zadeklarowana jako: `char nazwa[64];`
   plik.id=i;
   dodaj(poczatek,plik);
  }

1 użytkowników online, w tym zalogowanych: 0, gości: 1