Funkcja ze zmienną ilościa argumentów.

0

Cześć mam funkcje która liczy sumę z przekazanych parametrów. Udało mi się ją sprawdzić wprowadzając na sztywno kilka cyfr. Jednak gdy chcę aby dane były wprowadzane z klawiatury pojawia się błąd.Czy przekazanie tablicy jako argument jest dobrym rozwiązaniem?.
Tu funkcja.

int s(int *sum,int num,...)
{
   va_list arg;
   int  t;
   *sum=0;
   va_start (arg, num);
   for (t = 0; t<num; t++)
   {
     *sum += va_arg(arg,int);
   } 
   va_end(arg);
   return 0;
}

Wywołanie

s(&sum,size,*tab);

I tu pojawia się problem funkcja nie liczy poprawnie.

3

W takiej sytuacji nie ma co bawić się z va_arg - niech Twoja funkcja po prostu przyjmuje najzwyklejszą w świecie tablicę poprzez parametr i tyle.

0

Właśnie o to chodzi że ma być funkcja ze zmienną liczbą argumentów. Jak inaczej to wywołać żeby działało dla danych wprowadzonych z klawiatury?

1

W takim wypadku nie ma sposobu, który byłby portable i zgodny ze standardem - masz do dyspozycji tylko hacki (np. https://stackoverflow.com/questions/3351056/create-va-list-dynamically).

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