ison |
» 2010-06-11 13:42:11 folder tworzysz przez mkdir. np. system( "mkdir \"C:/Program Files/Nowy Folder\"" );
printf( "Podaj sciezke\n" ); char sciezka[]; scanf( "%s", sciezka ); char command[]; sprintf( command, "mkdir %s", sciezka ); system( command );
|
|
dmx81 |
» 2010-07-05 23:18:23 witam, dla bardziej zaawansowanych pewnie pytanie smieszne, ale ja nigdy tego nie uzywalem, wiec pytam:
int main(int argc, char* argv[])
co wpisujecie w tym nawiasie (odp ze parametry nie wystarczy:P bo na necie wyszukalem odp ze to sluzy do pobierania parametrow do programu z systemu - ale co dokladnie tam wpisac moze byc, jakis przyklad?)
bo tu widze ze uzywacie tego do uzyskania nazwy pliku itd - malan pisze zeby to wykombinowac - ja nie mialem pojecia, ze taki sposob istnieje;P no coz, ciagle sie ucze
czyli inaczej mowiac, do czego moze sie to przydac ijak to wykorzystac( bo nigdy dotad nie musialem podawac parametrow w main) |
|
DejaVu |
» 2010-07-05 23:24:38 Te zmienne nie służą do zapisywania, tylko odczytywania. Programy są na forum demonstrujące co się znajduje w tych zmiennych. Ponadto w ciągu ostatniego miesiąca o ile się nie mylę była przedstawiona odpowiedź do Twojego pytania na naszym forum. |
|
ison |
» 2010-07-05 23:26:12 tam przypisywane są wszystkie argumenty przekazane do funkcji main Pierwszy argument argc oznacza ilość elementów tablicy argv jeśli uruchamiasz program przez okienkowy Windows Explorer to zawsze będzie miał 1 argument - ścieżkę do pliku wykonywalnego. argumenty do twojego programu możesz przekazywać dzięki konsoli w której możesz przykładowo napisać "nazwa_programu.exe pierwszy drugi trzeci". Wtedy zostanie uruchomiony twój program z 4 argumentami zawartość argv w takim przypadku <ścieżka do pliku exe> pierwszy drugi trzeci
ponadto jeśli uruchamiasz dany plik swoim programem (tzn. przez opcję Otwieranie za pomocą) to jako drugi argument będzie przypisana ścieżka do pliku uruchomionego przez twój program co do przykładu o który prosiłeś to tu masz kod programu, który dodaje do siebie 2 zmienne podane w argumentach #include <cstdio>
int zmienna1, zmienna2;
int main( int argc, char * argv[] ) { if( argc < 2 || argc > 4 ) { printf( "Podane zle argumenty\n" ); return 0; } sscanf( argv[ 1 ], "%d", & zmienna1 ); sscanf( argv[ 2 ], "%d", & zmienna2 ); printf( "Wynik dzialania %d+%d wynosi %d\n", zmienna1, zmienna2, zmienna1 + zmienna2 ); }
tak jak już wspomniałem wyżej program uruchamiasz przez konsolę. Dzięki cd przechodzisz do ścieżki z programem i uruchamiasz go z 2 dodatkowymi argumentami tzn nazwa.exe 5 6
output: Wynik dzialania 5+6 wynosi 11
jeśli chodzi o jakieś praktyczniejsze zastosowania to wtedy gdy coś cię natchnie i zechcesz napisać program, który będzie obsługiwał twój własny format plików :) przykładowo przechowywanie zdjęć albo nawet samego tekstu tak abyś nie musiał zawsze odpalać swojego programu z określonej ścieżki tylko bezpośrednio klikając na plik z twoim formatem (tak jak .txt jest odpalany przez notepad.exe(mowa oczywiście o Windows'ach)) |
|
dmx81 |
» 2010-07-06 00:29:22 dzieki za odp... ale jak w reklamie tp sa jeszcze nie czuje, nie czuje, a czy to tak szybko jak rozpiac zamek blyskawiczny? ;P podajac program.exe 3 2 3 oznacza to, ze program.exe uruchomiony zostanie z 3 dodatkowymi argumentami, z czego pierwszy to nazwa pliku, a 2 pozostale to 2 i 3? ps. ta pierwsza trojka oznacza ile chce przekazac argumentow? czy nie musze tego podawac i argc samo sie ustawi w zaleznosci ile dopisze argumentow? ps2. rozumiem, ze argv[0] to bedzie sciezka do wykonywanego pliku, a nastepne argv to bedzie to, co dopisze ps3. agrc i argv to nazwy zawsze stale? czy to zalezy od tego co wypisze w main,np int main( int par1, char * par2[] )
ps4. czy musi zawsze to byc zestaw int i char* ? sorki ze tak mecze :) ale nie mam kogo zapytac, zeby sie dowiedziec, pewnie bardziej to opanuje, jak rzeczywiscie bedzie mi to potrzebne |
|
ison |
» 2010-07-06 00:37:07 oznacza to, ze program.exe uruchomiony zostanie z 3 dodatkowymi argumentami, z czego pierwszy to nazwa pliku, a 2 pozostale to 2 i 3?
zgadza się, z trzema dodatkowymi argumentami ale będą one wynosiły 3 2 3 użyłem słowa dodatkowymi bo zawsze argument pierwszy to ścieżka do pliku exe (czyli w sumie będą 4 argumenty) jak podajesz nazwa.exe coś jakieś_słowo bla to będzie tyle argumentów ile podasz słow oddzielając je spacją liczby argumentów (czyli argc) NIE podajesz argc jest liczony sam (jeśli nie będzie dodatkowych argumentów to będzie wynosił 1 gdyż jako pierwszy argument będzie podana ścieżka do pliku) a.exe ala ma kota
wtedy argc=4 argv[0]=<ścieżka do pliku exe> argv[1]="ala" argv[2]="ma" argv[3]="kota"
|
|
dmx81 |
» 2010-07-06 00:42:28 o w miedzy czasie jak pisalem moje ps to odpowiedziales, zerkniesz jeszcze wyzej ?;P dzieki za cierpliwosc i czas
ps - widze,ze i tak odpowiedziales na moje pytania zanim zadalem, dzieki :) mniej wiecej "czuje" pomalu |
|
ison |
» 2010-07-06 01:05:08 nazwy nie muszą być takie same (ale tak się przyjęło), kolejność i typ zmiennych muszą być zachowane zapomniałem o jednej rzeczy powiedzieć jeśli chcesz jako argument przekazać słowo w którym wystąpi spacja. jeśli napiszesz nazwa.exe Jan Kowalski
to przekazane zostaną 2 dodatkowe argumenty, aby przekazać jeden wystarczy wziąć oba słowa w cudzysłów nazwa.exe "Jan Kowalski"
p.s. unixy i windowsy mają jeszcze trzeci argument char * envp[] a Mac'i czwarty char * apple[] ale to już jest mniej ważne (jak i mniej użyteczne), tyle co ci już powiedziałem w poprzednich postach spokojnie wystarczy :) nie zapomnij również od czego masz edytor i kompilator... zawsze możesz sam poeksperymentować i sprawdzać co jest przypisane do danej zmiennej możesz sam sprawdzić co będzie zawierał envp #include <cstdio>
int main( int argc, char * argv[], char * envp[] ) { printf( "%p\n", envp[ 0 ] ); }
ale to już jest i tak bardzo mało istotne dla ciebie i nieciekawe ;) |
|
1 « 2 » 3 |