Błąd podczas kopiowania do struktury

Błąd podczas kopiowania do struktury
JA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 14
0
Kopiuj
   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?

Shalom
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Space: the final frontier
  • Postów: 26433
4

wywala się już tutaj:

Kopiuj
        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ł...

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

zastanów się nad:

Kopiuj
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);
  }

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.