[C++] Funkcja z parametrami
Ostatnio zmodyfikowano 2015-12-12 19:49
Sneakerz Temat założony przez niniejszego użytkownika |
[C++] Funkcja z parametrami » 2015-12-11 23:21:12 Mam za zadanie stworzyć konwerter liczb rzymskich na arabskie i odwrotnie, który wczytuje dane z pliku konwertuje liczby i zapisuje je do pliku wyjściowego. Mam cały konwerter i ogólnie wszystko działa kiedy wpisuje nazwy plików poprzez cin. Moje pytanie: jak wczytać nazwy z konsoli jako parametry tak żeby było np. Program.exe -i plikwejsciowy.txt -o plikwyjsciowy.txt to wczyta mi to funkcja w mainie z automatu jako plik wejsciowy i wyjsciowy? Czy taka funkcja musi pobierać coś z maina? Jak ją potem wywołać? Widziałem kilka takich funkcji ale niestety ich nie rozumiem. Proszę o jak najprostsze wytłumaczenie lub kod takiej funkcji z któtkim opisem. |
|
Roofy5 |
» 2015-12-12 18:18:33 Zapisz main w ten sposób: int main( int argc, char * argv[] ) int argc Oznacza ilość przesyłanych argumentów do programu. char * argv[] argv jest tablicą wskaźników na char`y O_o - prościej mówiąc - w tej tablicy znajdują się parametry które przesyłasz do programu, czyli zwykłe stringi ;) Tych argc oraz argv możesz w normalny sposób używać w programie np: cout << argv[ 1 ]; argv[ 0 ] = "Hello World"; argc++; argv[ 1 ] = "C++";
W programie możesz napisać tak: if( argc > 1 ) funkcja( argv[ 1 ], argv[ 2 ] );
Jeżeli uruchomisz program z konsoli w ten sposób: Program.exe Wej.txt Wyj.txt to: - argc = 3 //albo 2 - nie jestem pewien w 100% xD - argv[0] = sciezka do program.exe - argv[1] = "Wej.txt" - argv[2] = "Wyj.txt" Jeżeli nic nie pomyliłem (pisałem wszystko z głowy) to powinno działać ;) Jeżeli użwyasz cout/printf() i cin/scanf() to możesz także użyć strumieniowania w ten sposób: program.exe < wej.txt > wyj.txt |
|
1aam2am1 |
» 2015-12-12 19:45:18 Dla Roofy5 dla twojej wiedzy nie powinniśmy modyfikować zawartości char * argv[] Jak wiesz tablice mają swoją z góry określoną wielkość, co się stanie gdy nie przekażesz żadnych argumentów i coś do niego wpiszesz. Wyjdziesz poza tablicę, nadpiszesz program lub coś jeszcze innego...
|
|
Roofy5 |
» 2015-12-12 19:49:08 Wiadome że jeżeli nic nie przekażemy to popiszemy pamięć i dostaniemy page fault :P
Chciałem koledze tylko pokazać że to są zwykłe zmienne, których używamy tak jak każdych innych zmiennych ;) |
|
« 1 » |