C++ pytanie dot. wskaźników i char**argv

0

Witam!
Mam pytanie otóż natknąłem się na taką definicję main:

 int main(int argc,char **argv) 

, może ktoś wyjaśnić mi po co stosuje się char** argv ?
Kolejne pytanie dotyczy tego fragmentu:

void zpliku(char *in,uczen *s,int n)  
{
	ifstream plik;
	plik.open(in);
	
	for(int i=0;i<n;++i)
	{
		plik>>s[i].imie;
		plik>>s[i].nazwisko;
		plik>>s[i].klasa;
		plik>>s[i].zach;
		plik>>s[i].srednia;
	}
} 

w/w fragmencie nie rozumiem po co zdefiniowano char*in.

Wiem, że pytania banalne, że można poszukać w necie ale natknąłem się na odpowiedzi albo zawiłe albo po angielsku.

Pozdrawiam

0

o_O

  1. char* argv[] to jest tablica z listą parametrów wywołania programu. Jeśli wołasz program np. z konsoli to możesz zrobic np.:
./program parametr1 parametr2

I te parametry można potem z tej tablicy odczytać.
2. Robisz sobie jaja? Ten argument in to jest nazwa pliku, zresztą chyba widzisz gdzie jest uzyte -> przy otwieraniu pliku.

0

Uzupełniając: char** argv jest w przypadku parametru funkcji ekwiwalentne char* argv[], więc można użyć obydwu zapisów. ;)

void zpliku(char *in,uczen *s,int n)  

Powinieneś raczej użyć const char* in - aby można było funkcję wywołać z literałem: zpliku("nazwa", uczniowie, liczba_uczniow);.

0

Ok mniej więcej rozumiem o co chodzi z tymi parametrami ale nadal nie rozumiem skąd char*in bierze nazwę. Z parametru argv[1] = "uczniowie.txt"; ?

0

Jak napisał Ci wcześniej @Azrael_Valedhel powinno być tam
const char *in

Nazwę bierze z wywołania funkcji jak też Ci kolega napisał
zpliku("nazwa", uczniowie, liczba_uczniow);

pobierasz dane z pliku o nazwie "nazwa" - ty wpisałeś nazwę żeby wywołać funkcję.

0

Ok, dziękuje za pomoc a temat można zamknąć.

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