Ze zwykłą tablicą działa, z dynamiczną już nie

0

Mam program, którego istotą jest aby wynik zapisywał do tablicy dynamicznej w strukturze. Na zwykłej, statycznej tablicy wszystko ładnie działa. Niestety na dynamicznej już nie.
Kod stuktury:

 struct sygnal
{
    float poczatek, koniec, interwal;
    float *tablica;
    int rozmiar;
    rozmiar = (koniec - poczatek)/interwal;
    tablica = (float*)malloc(rozmiar * sizeof(float));
};
0

Napisz sobie funkcję, która to będzie robić. Nie możesz tak sobie po prostu wpisać kodu w strukturę.

0

Nie bardzo rozumiem... Struktura ma przechowywać tylko wskaźnik do tej dynamicznej tablicy, czy jak?

0

Załóżmy, że w kodzie tworzysz obiekt tej struktury:
sygnal sygnalObject;

Powiedz mi jakie wartości w tym momencie mają poczatek, koniec i interwal i ile pamięci miałaby zaalokowac funkcja malloc() dla tablicy?
I podobnie jak napisał Endrju - dopiero po utworzeniu obiektu tej struktury możesz sobie poprzypisywać wartości poszczególnym polom. Mógłbyś pokazac kod ze statyczną tablicą, który wg ciebie działa?

0

No dokładnie tak. W definicji struktury nie możesz wykonywać funcji

0
Tomek2 napisał(a)

Załóżmy, że w kodzie tworzysz obiekt tej struktury:
sygnal sygnalObject;

Powiedz mi jakie wartości w tym momencie mają poczatek, koniec i interwal i ile pamięci miałaby zaalokowac funkcja malloc() dla tablicy?
I podobnie jak napisał Endrju - dopiero po utworzeniu obiektu tej struktury możesz sobie poprzypisywać wartości poszczególnym polom. Mógłbyś pokazac kod ze statyczną tablicą, który wg ciebie działa?

W wersji ze statyczną tablicą mam po prostu w strukturze tablice ze stałą przez co każdy kolejny obiekt tej struktury wie, jaka ma być w nim tablica.

Rzeczywiście, dzięki, nie pomyślałem o tym, a to przecież logiczne. Spróbuję sam sobie poradzić, jak nie to wieczorem będę miał pytania.

Przepraszam za post pod postem, ale:

  • z tablicami się uporałem (dzięki wam)
  • chcę zapisać swoje dane do pliku o wybranej przez siebie nazwie. Nie działa mi taki kod:
 FILE *f;
   printf("Podaj nazwe pliku: ");
    fgets (FileName, sizeof FileName, stdin);
   f=fopen(FileName,"w");
0

A możesz pokazać co to jest FileName?

0

50-cio elementowa tablica znakowa

0

Sprawdzałeś jaką wartość zwraca sizeof? A tak w ogóle to w którym miejscu dostajesz błąd?

fgets() wrzuca do bufora także enter (10).
Użyj scanf i zadziała.

0

Właśnie nie dostaję żadnego błędu.

0

Pokaż cały kod, nikomu nie chce się już zgadywać

0

Tak jak napisałem wyżej - zamień fgets() na scanf() i będzie działać.

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