Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2007-12-25 13:54:59

  giegiel - Członek DUG

giegiel
Członek DUG
Skąd: Chrzypsko Wielkie/Poznań
Zarejestrowany: 2006-04-15

[c++]Pobieranie argumentu do programu

Jak zrobić żeby wpisać nazwę programu a obok argument który ma być wykorzystany w programie?? Np. Wklepujemy

Kod:

program 1

i program o nazwie program pobiera podany argument  (w tym wypadku 1) i wykorzystuje go w programie np.wyświetlając go. Help ;D

Ostatnio edytowany przez giegiel (2007-12-29 23:01:16)

Offline

 

#2  2007-12-25 14:29:53

  owca - Członek DUG

owca
Członek DUG
Skąd: Szczerców
Zarejestrowany: 2007-01-30
Serwis

Re: [c++]Pobieranie argumentu do programu

Funkcję main musisz zapisać w taki sposób:

Kod:

int main(int argc, char *argv[])
{

}

Argument argc zawiera informację ile parametrów zostało odebranych od systemu. Jest to zawsze przynajmniej liczba 1 bo pierwszym argumentem jest nazwa wywoływanego programu.
Drugi argument to tablica wskaźników na parametry zapisane w postaci C-Stringów. C-String to tablica obiektów char zawierająca parametr.

Przykładowy program:

Kod:

#include <iostream>

using namespace std;

int main(int argc, char *argv[])
{
     
if (argc == 1)
{
   cout << "Program wywołano z " << argc << " argumentem. Oto on " << endl << argv[0] << endl;
}
else
{
   cout << "Program wywołano z " << argc << " argumentami. Oto one " << endl;     
   for (int x = 0; x<argc; x++)
      cout << argv[x] << endl;     
}
    
}

Offline

 

#3  2007-12-26 01:55:07

  giegiel - Członek DUG

giegiel
Członek DUG
Skąd: Chrzypsko Wielkie/Poznań
Zarejestrowany: 2006-04-15

Re: [c++]Pobieranie argumentu do programu

Dzięki o to biegało ;D nie jest to idealne ale trudno ;p

Offline

 

#4  2007-12-26 17:29:41

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: [c++]Pobieranie argumentu do programu

giegiel napisał(-a):

nie jest to idealne ale trudno ;p

a co jest nie tak ... bo napewno da sie zrobic aby bylo lepiej ...


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

#5  2007-12-27 02:13:25

  giegiel - Członek DUG

giegiel
Członek DUG
Skąd: Chrzypsko Wielkie/Poznań
Zarejestrowany: 2006-04-15

Re: [c++]Pobieranie argumentu do programu

dobra ;D tak może być :D poradziłem sobie ;D
Dzięki wielkie ;D

Offline

 

#6  2007-12-29 23:06:48

  giegiel - Członek DUG

giegiel
Członek DUG
Skąd: Chrzypsko Wielkie/Poznań
Zarejestrowany: 2006-04-15

Re: [c++]Pobieranie argumentu do programu

Ok z tamtym to już czaje ;D jednak proste w miarę ;D hehe a teraz mam  pytanie czy da się zmienić kolor tekstu w c++?? Bo szukałem i doczytałem że się da ale nie działa ;/  I drugie takie bardziej poważne to dalej wczytywanie danych ale tym razem z pliku. Załóżmy  że mam plik którego zawartość wygląda następująco:

Kod:

1 8 1000
24 26 20
36 25 10
15555 2458 3586

Takk... I teraz chciałbym pobrać daną z pierwszej kolumny do załóżmy zmiennej a drugą do b trzecią do c i wyświetlić po czym przejść do następnego wiersza ;D kombinowałem szukałem ale znalazłem tylko coś co ściąga linie ;D pozdrawiam

Offline

 

#7  2007-12-30 00:18:56

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: [c++]Pobieranie argumentu do programu

ad1. aby uzyskac kolor na terminalu musisz wypisac pewna specjalna sekwencje znakow ... w bashu

Kod:

echo -e '\033[1;31mNA_CZERWONO\033[0m'

spowoduje wypisanie tekstu na czerwono ... jezeli w wypisywanym napisie w C dodasz na poczatku \\033[1;31m i na koncu \\033[0m to tez uzyskasz taki efekt ... jedyna kwestia jaka byc moze trzeba dobrac jest zabezpieczenie antyukosnikow i wartosci ustawiajace kolor ...

ad2. nastepnie z napisu takiego wyciagasz sobie kolejne pola poprzez szukanie spacji/tabulatorow ...

Ostatnio edytowany przez bercik (2007-12-30 00:19:13)


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

#8  2007-12-30 00:56:37

  giegiel - Członek DUG

giegiel
Członek DUG
Skąd: Chrzypsko Wielkie/Poznań
Zarejestrowany: 2006-04-15

Re: [c++]Pobieranie argumentu do programu

W bashu to może działa ale w c++ nie. A co do odp na 2gie pyt to czy mógłbym prosić o przykład??  Bo to co powiedziałeś jest dość oczywiste ale pytanie jak :D np taki przykład jak mi owca ostatnio dał ;D pozdrawiam

Offline

 

#9  2007-12-30 02:56:58

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: [c++]Pobieranie argumentu do programu

Ad. 1 - u mnie dziala ... terminal musi obslugiwac kolorowanie ...

Kod:

#include <iostream>

using namespace std;

main() {
    cout << "\033[1;31mNA_CZERWONO\033[0m\n";
}

Ad. 2 mowisz i masz ;-) ... pisane na szybko byc moze cos trzeba dopracowac ...

Kod:

#include <iostream>

using namespace std;

main() {
    string linijka = "12 14 25 ";
    int tmp=-1, old_tmp, x;
    
    for (int i=0; i<3; i++) {
        // ustalamy granice pola
        old_tmp = tmp + 1;
        tmp = linijka.find(" ", old_tmp);
        // konwertujemy pole na liczbe
        x = atoi(linijka.substr(old_tmp, tmp).c_str());
        // wypisujemy
        cout << "Pole numer: " << i << " ma wartosc: " << x << endl;
    }
}

... moznaby to robic tez przez tzw formatowane wejscie ... ale ten sposob jest chyba bardziej elastyczny i dydaktyczny

Ostatnio edytowany przez bercik (2007-12-30 02:59:45)


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)