Hollosi Information eXchange /HIX/
HIX CODER 2407
Copyright (C) HIX
2006-10-13
Új cikk beküldése (a cikk tartalma az író felelőssége)
Megrendelés Lemondás
1 RE: C programozas (mind)  61 sor     (cikkei)
2 re: C programozas (mind)  8 sor     (cikkei)
3 re: C programozas (mind)  8 sor     (cikkei)

+ - RE: C programozas (mind) VÁLASZ  Feladó: (cikkei)

Szervusztok

> Olyan fuggvenyre van szuksegem, amelyet valtozo parameterekkel lehet
> meghivni (mint pl. a "printf"-et). Azt mar tudom, hogy ehhez a
> "va_list" es a "va_arg" szukseges az stdarg.h-bol - de nem tudtam
> kideriteni, hogyan kell ezeket hasznalni.

Engem nem igazan nyert meg, mert gyerekesen gyengenek talaltam.
Amolyan jo C stilusban elmegy a memoriaban es nincs ami megallitsa.
Ugy ertem nincs semmi ami jelezne az argumentum lista veget, a
programozo maga kell gondoskodjon valamirol.
A lenti peldaban ket lehetseges modszer hasznalatat vazoltam :
 - egy kulonleges jeletesu ertek jelzi a lista veget ( atlag1() )
 - kulon parameterben meg van adva a lista hossza ( atlag2 () )

#include<stdarg.h>

void atlag1(char* nev,...)
{
  int darab=0,ossz=0,egy;
  va_list lista;

  va_start(lista,nev);

  while (egy=va_arg(lista,int)) {
    darab++;
    ossz+=egy;
  }

  printf("%s ( 1. modszer ) : %d / %d = %d\n",nev,ossz,darab,ossz/darab);

  va_end(lista);
}

void atlag2(char* nev,int darab,...)
{
  int ossz=0,i;
  va_list lista;

  va_start(lista,darab);

  for (i=0;i<darab;i++) ossz+=va_arg(lista,int);

  va_end(lista);

  printf("%s ( 2. modszer ) : %d / %d = %d\n",nev,ossz,darab,ossz/darab);
}

void main(void)
{
  atlag1("Moricka",1,2,3,4,5,0);
  atlag1("Pistike",2,1,2,2,2,3,2,4,2,5,0);

  atlag2("Moricka",5,1,2,3,4,5);
  atlag2("Pistike",10,2,1,2,2,2,3,2,4,2,5);
}

Telsztelve Turbo C 2.0 .

Feherke.
http://script.fplanet.hu
+ - re: C programozas (mind) VÁLASZ  Feladó: (cikkei)

>"va_arg" szukseges az stdarg.h-bol - de nem tudtam
>kideriteni, hogyan kell ezeket hasznalni.
>Tud valaki egy peldat kuldeni?

Ha megírod a fejlesztőkörnyezetedet akkor többet lehet segíteni.
Pl. a Borland C++ Builder-ben a help-ben jó példák (example) is vannak.

:Voli
+ - re: C programozas (mind) VÁLASZ  Feladó: (cikkei)

Hello,

http://www.eet.bme.hu/publications/e_books/progr/cpp/node64.html

itt talalsz va_list -es peldaprogramot.

udv
Balazs

AGYKONTROLL ALLAT AUTO AZSIA BUDAPEST CODER DOSZ FELVIDEK FILM FILOZOFIA FORUM GURU HANG HIPHOP HIRDETES HIRMONDO HIXDVD HUDOM HUNGARY JATEK KEP KONYHA KONYV KORNYESZ KUKKER KULTURA LINUX MAGELLAN MAHAL MOBIL MOKA MOZAIK NARANCS NARANCS1 NY NYELV OTTHON OTTHONKA PARA RANDI REJTVENY SCM SPORT SZABAD SZALON TANC TIPP TUDOMANY UK UTAZAS UTLEVEL VITA WEBMESTER WINDOWS