Zapis danych do tablicy struktur

0

Kod programu:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define DLUGOSC 21
#define ROZMIAR 4
#define ILOSC_OCEN 3

struct daneos
{
    char imie[DLUGOSC];
    char nazwisko[DLUGOSC];
};
struct student
{
    struct daneos dane;
    float oceny[ILOSC_OCEN];
    float srednia;
};
typedef struct student (* mystruct)[ROZMIAR];

void podaj_oceny(mystruct ws);
int main (void)
{
    int licznik, licznik2;
    struct student studenci[ROZMIAR];
    strcpy(studenci[0].dane.imie, "aaa");
    strcpy(studenci[0].dane.nazwisko, "bbb");
    strcpy(studenci[1].dane.imie, "ccc");
    strcpy(studenci[1].dane.nazwisko, "ddd");
    strcpy(studenci[2].dane.imie, "eee");
    strcpy(studenci[2].dane.nazwisko, "fff");
    strcpy(studenci[3].dane.imie, "hhh");
    strcpy(studenci[3].dane.nazwisko, "kkk");

    mystruct wsk;
    wsk = &studenci;

    podaj_oceny(wsk);

    for(licznik = 0; licznik < ROZMIAR; licznik++)
        for(licznik2 = 0; licznik2 < ILOSC_OCEN; licznik2++)
        {
            printf("%f ", studenci[licznik].oceny[licznik2]);
            printf("\n");
        }
    return 0;
}
void podaj_oceny(mystruct ws)
{
    int licznik, licznik2;

    for(licznik = 0; licznik < ROZMIAR; licznik++)
        for(licznik2 = 0; licznik2 < ILOSC_OCEN; licznik2++)
        {
            scanf("%f", &ws[licznik]->oceny[licznik2]);
            printf("%f ", ws[licznik]->oceny[licznik2]);
        }
}
 

Niezależnie od stałej ILOSC_OCEN przy próbie zapisu do trzeciego elementu (gdy w funkcji podaj_oceny zmienna licznik jest równa 2) wywala błąd. Po małej zmianie program działa poprawnie, jednak chcę się dowiedzieć, dlaczego wywala ten błąd. Nic mi nie przychodzi do głowy.

0

A którego słowa nie rozumiesz z tego co ci krzyczy kompilator?
http://ideone.com/mSNuNB

0

Mógłbyś opisać dokładniej ten błąd? Jest on związany z kompilacją, czy z działaniem programu?

0

Więc kod programu jest prawidłowy, lecz musi coś być u mnie, może pamięć. Działam na trochę starszym typie komputera. Przy samej instrukcji przypisania program się wiesza. Próbowałem nawet zapisać dane do struktury trzeciej oraz czwartej, do różnych miejsc w tablicy oceny, lecz zapisując tam program się wiesza.

0

Ma być tak:

            scanf("%f",&(*ws)[licznik].oceny[licznik2]);
            printf("%f ",(*ws)[licznik].oceny[licznik2]);

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