Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++] Funkcja z parametrami

Ostatnio zmodyfikowano 2015-12-12 19:49
Autor Wiadomość
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.
P-141805
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:
C/C++
cout << argv[ 1 ];
argv[ 0 ] = "Hello World"; //Zwykły string
argc++; //Zwykły int
argv[ 1 ] = "C++"; //Tu także zwykły string
W programie możesz napisać tak:
C/C++
if( argc > 1 )
     funkcja( argv[ 1 ], argv[ 2 ] ); //Funkcja(plik wejsciowy, plik wyjsciowy);


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


P-141829
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...
P-141842
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 ;)
P-141843
« 1 »
  Strona 1 z 1