Przekazanie pola struktury do argumentu funkcji

0

Posiadam funkcje ktora nie pozwala na wczytanie liter do zmiennej, wszystko dziala w takiej postaci:

        while(scanf("%f", auta[i].cena) != 1) //dopóki nie uda się wczytać   --- cena to typ float i jest to pole struktury
{
  //ew. komunikat błędu
  int c;
  while((c = getchar()) != '\n' && c != EOF); //pętla wyciągająca znaki z bufora
}
}

Taki wiersz polecen musze ogolnie wywolac ok 3 razy tak wiec chce go przerobic na funkcje i tutaj pojawia sie moj problem.[wiem ze strukture przekazuje sie tak samo jak inne typy]
dochodze do czegos takiego

void warunek(TUTAJ NIE WIEM CO WPISAC )
{
        while(scanf("%f", &zmienna) != 1) //dopóki nie uda się wczytać
{
  //ew. komunikat błędu
  int c;
  while((c = getchar()) != '\n' && c != EOF); //pętla wyciągająca znaki z bufora
}
}
warunek(auta[i].cena);

Wydaje mi się ze powinno być : (float zmienna) gdyz moje pole cena to float. ale cos jest nie tak tzn funkcja dziala(odpala sie) ale po jej zakonczeniu jest zapisanie .ceny do pliku i jej nie zaisuje = nie czyta jej = dochodze do wniosku ze brakuje gdzies & .

0

void warunek(float &zmienna)

0

Właśnie już tak pisałem i wywala błąd-y:
błąd składniowy: brakuje ")" przed "&"
błąd składniowy: brakuje "{" przed "&"
error C2059: Błąd składniowy: "&"
Błąd składniowy: ")"
wszystkie w linijce z: void warunek(float &zmienna)

1

Więc oznacza to że kompilujesz w C (nie w C++) w C jeszcze nie było referencji, więc wywołanie:
warunek(auta[i].cena);
tak aby funkcja zmieniła cenę nie jest możliwe.
Trzeba wywołać tak:
warunek(&auta[i].cena);
Przyjąć:
void warunek(float *zmienna)
używać:
while(!scanf("%f",zmienna))

0

Dziękuję, na Pana wiedzę zawsze można liczyć. Oczywiście wszystko działa.

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