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

C++ pytanie dot. wskaźników i char**argv
LA
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 5 lat
  • Postów:51
0

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

Kopiuj
 int main(int argc,char **argv) 

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

Kopiuj
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

Shalom
  • Rejestracja:około 21 lat
  • Ostatnio:prawie 3 lata
  • Lokalizacja:Space: the final frontier
  • Postów:26433
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.:
Kopiuj
./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.


"Nie brookliński most, ale przemienić w jasny, nowy dzień najsmutniejszą noc - to jest dopiero coś!"
Xupicor
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 8 lat
0

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

Kopiuj
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);.


LA
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 5 lat
  • Postów:51
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"; ?

MJ
  • Rejestracja:ponad 16 lat
  • Ostatnio:ponad 10 lat
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ę.


Gdy się nie wie, co się robi, to dzieją się takie rzeczy, że się nie wie, co się dzieje ;-)
LA
  • Rejestracja:ponad 14 lat
  • Ostatnio:około 5 lat
  • Postów:51
0

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

edytowany 1x, ostatnio: Langol

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.