Przekazanie pola struktury do argumentu funkcji

Przekazanie pola struktury do argumentu funkcji
kocór
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0

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

Kopiuj
        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

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

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0

void warunek(float &zmienna)

kocór
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
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)

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
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))

kocór
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 27
0

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

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.