Tablica struktur jako parametr/blad w funkcji (czysty C)

0

Mam nastepujacy problem:

  1. Mam sobie taka strukturke:
struct spizarka{
    char nazwa_produktu[30];
    char jednostka[30];
    float liczba_jednostek;
};
typedef struct spizarka produkt;
  1. W funkcji main stowrzylem tablice struktur:
produkt tab[200];
  1. W funkcji main stworzylem rownierz wywolanie funkcji DodanieProduktu:
DodanieProduktu(liczba_produktow, tab);

gdzie liczba_produktow to int o wartosci 0
4)Nastepnie zdefiniowalem funkcje:

void DodanieProduktu(liczba_produktow, tab)
{
    printf("Prosze podac nazwe produktu: ");
    scanf("%s", &tab[liczba_produktow].nazwa_produktu);
    printf("\nProsze podac jednostke produktu: ");
    scanf("%s", &tab[liczba_produktow].jednostka);
    printf("\nProsze podac ilosc jednostek: ");
    scanf("%d", &tab[liczba_produktow].liczba_jednostek);
    liczba_produktow++;
}

Tutaj powstał caly problem, gdy próbuje skompilować program/uruchomić program wyskakuje mi takie coś:
user image
Co tutaj jest grane?

1

Jakieś bzdury wierutne ci tu wyszły w tym kodzie. Nie możesz tak zrobić.

  1. Argument musi mieć zadeklarowany typ, liczba_produktow nie ma żadnego typu, od c++11 możesz zadeklarować jako auto
    2.Tab tak samo nie ma typu, musisz przekazać to albo jako wskaźnik, albo jeśli piszesz w c++ to vector.
  2. liczba_produktow nie będzie inkrementowana pomiędzy wywołaniami funkcji, bo przekazujesz ją przez stos, musisz przekazać przez wskaźnik bądź referencje, ostatecznie zadeklarować ją jako static w ciele funkcji wczytującej.
0

Dobra, czyli podpunkt 1) i 2) zostaje bez zmian.
W podpunkcie 3) zmieniłem:

DodanieProduktu(liczba_produktow, *tab);

gdzie liczba_produktow to int o wartosci 0
Podpunkt 4) również zmodyfikowałem:

{
void DodanieProduktu(int liczba_produktow, produkt tab)
{
    printf("Prosze podac nazwe produktu: ");
    scanf("%s", &tab[liczba_produktow].nazwa_produktu);
    printf("\nProsze podac jednostke produktu: ");
    scanf("%s", &tab[liczba_produktow].jednostka);
    printf("\nProsze podac ilosc jednostek: ");
    scanf("%d", &tab[liczba_produktow].liczba_jednostek);
}

Ale niestety dalej występuje ten sam błąd.
@Edit
Piszę w czystym C, chciałbym po prostu stworzyć funkcję, w której user podaje jakies wartosci tak jak w funkcji DodanieProduktu i są one zapisywane do tablicy struktury jako np.: produkt tab[0].
@Edit EDIT
Dobra problem rozwiązany!!!! NIEAKTUALNE

0
void DodanieProduktu(int *liczba_produktow, produkt tab[])
{
    printf("Prosze podac nazwe produktu: ");
    scanf("%s", &tab[liczba_produktow].nazwa_produktu);
    printf("\nProsze podac jednostke produktu: ");
    scanf("%s", &tab[liczba_produktow].jednostka);
    printf("\nProsze podac ilosc jednostek: ");
    scanf("%d", &tab[liczba_produktow].liczba_jednostek);
    ++*liczba_produktow;
}

wywołanie:

DodanieProduktu(&liczba_produktow, tab);

http://4programmers.net/Forum/1101404

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