tirou Temat założony przez niniejszego użytkownika |
Co oznacza: int main( int argc, char * argv[] ) » 2012-09-10 23:05:00 W wielu książkach i nawet tutaj na forum widze pewien fragment kodu, którego znaczenia nie rozumiem. Otóż: int main( int argc, char * argv[] ) CO oznacza ten fragment w argumentach main ? I do czego on służy ? |
|
jsc |
» 2012-09-11 00:00:56 Wewnątrz nawiasu okrągłego są dane tablicy parametrów: argc - to liczba argumentów char * argv[] - zawiera ścieżkę wywołania i parametry podane wraz z jego parametrami. |
|
kubawal |
» 2012-09-11 08:05:01 @jsc parametry podane wraz z jego parametrami |
???? To char * argv[] oznacza tyle samo co char ** argv , co oznacza tablicę tablic(łańcuchów) typu char |
|
xevuel |
» 2012-09-11 08:09:14 Jeśli z konsoli wywołasz przykładowo: twoj_program -o file.txt 1094 45 To argc == 5, argv[0] == "twoj_program", argv[1] == "-o", argv[2] == "file.txt", argv[3] == "1094", argv[4] == "45". |
|
kubawal |
» 2012-09-11 08:13:42 Jeszcze jeśli w konsoli dasz program text "to jest tekst" , to argc = 3, argv[0] == "program", argv[1] == "text" i argv[2] == "to jest tekst" |
|
tirou Temat założony przez niniejszego użytkownika |
» 2012-09-12 11:53:44 Nie za bardzo rozumiem z tymi wywołaniami (być może dlatego, że panowie wywolujecie program w konsoli na linuksie), ale zadam pytanie, czy to jest czasem zbędne? Jeżeli funkcja main będzie z nieokreslonymi akgumentami int main() czy coś trace?
Edit/
twoj_program -o file.txt 1094 45
To argc == 5, argv[0] == "twoj_program", argv[1] == "-o", argv[2] == "file.txt", argv[3] == "1094", argv[4] == "45".
Tu chodzi o to, że mój program będzie miał 5 argumentów, program o nazwie twoj_program , "-o" argumentu owego nie rozumiem, file.txt. tzn że moj program bedzie korzystał z odrebnego pliku "file.txt"? argv[3] i argv[45] nie wiem z czym to powiazac.
Mniej więcej o to chodzi ? |
|
pekfos |
» 2012-09-12 12:32:09 Tu chodzi o to, że mój program będzie miał 5 argumentów, program o nazwie twoj_program , "-o" argumentu owego nie rozumiem, file.txt. tzn że moj program bedzie korzystał z odrebnego pliku "file.txt"? argv[3] i argv[45] nie wiem z czym to powiazac. |
Z niczym nie wiązać. Wyłącznie od kodu programu zależy, co będą oznaczać parametry wywołania. int main( int argc, char ** argv ) { } Ten program nic nie robi. Niezależnie od tego, co mu podasz podczas wywołania. int main( int argc, char ** argv ) { if( !strcmp( argv[ 1 ], "--help" ) ) { printf( "pomoc programu, bla bla bla" ); } else if(..) else printf( "Wywolaj \"Program --help\" aby otrzymac pomoc." ); } A tu taki przykład.. |
|
xevuel |
» 2012-09-12 15:35:49 panowie wywolujecie program w konsoli na linuksie |
Ależ nie :) Zwykły, windowsowy cmd. czy to jest czasem zbędne |
Zależy od specyfiki programu. Co do kodu @pekfosa - czasem wywołuje się również taką wersję: int main( int argc, char ** argv ) { if( !strcmp( argv[ 1 ], "--help" ) ) { printf( "pomoc programu, bla bla bla" ); } else if(..) else printf( "Wywolaj \"%s --help\" aby otrzymac pomoc.", argv[ 0 ] ); }
aby aktualna nazwa pozostała niezależnie od nazwy pliku wykonywalnego. Jeszcze jeden, konkretny przykład (na IrfanView) - po otworzeniu cmd i wpisaniu i_view32.exe otworzy Ci się okno programu, i nie zostanie poza tym wykonana żadna czynność. Wpisanie i_view32.exe obraz1.bmp /convert=obraz2.png /transpcolor=(10, 10, 10) nie spowoduje otwarcia okna, ale przekonwertuje plik obraz1.bmp na obraz2.png. Po prostu program w zależności od przekazanych mu parametrów MOŻE wykonać inną czynność niż standardowa/domyślna. @down: To nie jest mój kod, tylko kod pekfosa z modyfikacją polegającą na wstawieniu aktualnej nazwy exeka, a nie tej stworzonej przez stwórcę. |
|
« 1 » 2 |