Poredjenje argumenta c++

poruka: 3
|
čitano: 1.673
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
13 godina
neaktivan
offline
poredjenje argumenta c++

Evo prostog programa

 

#include <iostream>
using namespace std;

int main(int argc ,char *argv[]){
    if(argv[1]=="-p") cout<<"text"<<endl;
    else cout<<"greska"<<endl;
    return 0;
}

medjutim kad pokrenem program ,on stalno ispisuje gresku

 

ciko@qw3rty:~/Desktop/temp$ ./a.out -p
greska
ciko@qw3rty:~/Desktop/temp$ ./a.out
greska
ciko@qw3rty:~/Desktop/temp$ ./a.out -
greska
gdje grijesim :/ ?

Moj PC  
0 0 hvala 0
14 godina
neaktivan
offline
Re: poredjenje argumenta c++

Ne mozes tako usporedivati stringove. Moras koristiti strcmp() ili nesto slicno. Na ovaj nacin mozes usporedivati samo brojeve.

 

Evo i primjer:

#include <iostream>
#include <cstring>
using namespace std;

int main(int argc ,char *argv[]){
    if(strcmp(argv[1], "-p")==0) cout<<"text"<<endl;
    else cout<<"greska"<<endl;
    return 0;
}

 

I jedna stvar ti nije u redu. Ne provjeravas broj argumenata te pretpostavljas da ih ima. Sto ako pokrenem taj tvoj program bez argumenata? argv[1] (u kojem se nalazi random data) ce biti usporeden sa "-p".

 

zato bi ovo bilo pametnije:

#include <iostream>
#include <cstring>
using namespace std;

int main(int argc ,char *argv[])
{
    if (argc>1)
    {
       if (strcmp(argv[1], "-p")==0)
          cout<<"text"<<endl;
       else
          cout<<"greska"<<endl;
    }
    else
        cout<<"greska"<<endl;
    return 0;
}

So then I typed GOTO 500 - and here I am!
Poruka je uređivana zadnji put pet 12.8.2011 20:33 (rustweaver).
13 godina
neaktivan
offline
Poredjenje argumenta c++

Hvala :) !

Moj PC  
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice