Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: [C++] controle op argumenten werkt niet volgens plan  (gelezen 1441 keer)

[C++] controle op argumenten werkt niet volgens plan
« Gepost op: 2010/05/10, 10:42:36 »
ik ben een CLI-gebaseerd programma an het maken, dat exact een parameter moet hebben.
ik heb dit gedaan:
if(argc != '1'){ zodat als het niet 1 is, hij binnen de if het programma afsluit via exit() en meld dat er een parameter moet zijn.
nou weet ik toch vrij zeker dat "!=" als betekenis heeft "niet gelijk aan".

indien ik hem zonder parameter aanroep, of met twee.
krijg ik inderdaad de melding dat hij een parameter moet, niet meer en niet minder.

lijkt dus goed, maar, ik krijg die melding dus ook als ik wel exact een parameter geeft en dat is niet de bedoeling.
ik heb het ook geprobeerd met wat andere dingetjes (als <= en >=) maar dat werkte of helemaal niet, of net als dit.


ADSL? nee, neem ADHD, dat is pas snel!

Re: [C++] controle op argumenten werkt niet volgens plan
« Reactie #1 Gepost op: 2010/05/10, 10:59:34 »
Wat als je if(argc != '1'){ vervangt door:
  if(argc ! '1'){ dus zonder die =
Laptop MSI U123 (160 GB) 1 GB ramMint Cinnamon 18 LTS
Laptop Toshiba Tecra  (80GB) 2 GB ram Fedora 24
Dell Latitude D600 Pentium M 1400MHz 512MB ram
Bouwjaar 2003 met Debian 8 (Jessie)

Re: [C++] controle op argumenten werkt niet volgens plan
« Reactie #2 Gepost op: 2010/05/10, 12:19:32 »
dan willie niet meer compileren:
getinfo.cpp: In function ‘int main(int, char**)’:
getinfo.cpp:24: error: expected ‘)’ before ‘!’ token
make: *** [getinfo] Fout 1


ADSL? nee, neem ADHD, dat is pas snel!

Offline muksie

  • Lid
Re: [C++] controle op argumenten werkt niet volgens plan
« Reactie #3 Gepost op: 2010/05/10, 13:16:17 »
Je zoekt:
if(argc != 1){Dit omdat argc een integer (int) is en geen char. Je wilt dat deze het getal 1 bevat, en niet het karakter '1'.

Een char is ook een vorm van een getal, maar volgens de ASCII tabel zal dit geinterpreteerd worden als het getal 49.

Veder is het eerste argument (meestal) de naam van het programma. Als je programma dus 1 argument mee krijgt, dan heeft argc de waarde 2. Dan krijg je misschien iets als
if(argc == 2){
  char* argument = argv[1]
  ...
} else {
  // programma fout aangeroepen
}

Re: [C++] controle op argumenten werkt niet volgens plan
« Reactie #4 Gepost op: 2010/05/10, 13:58:14 »
goed punt, nu inderdaad controle of hij gelijk is aan 2 en nu werkt het goed^^


ADSL? nee, neem ADHD, dat is pas snel!

Re: [C++] controle op argumenten werkt niet volgens plan
« Reactie #5 Gepost op: 2010/05/11, 08:06:00 »
Wat als je if(argc != '1'){ vervangt door:
  if(argc ! '1'){ dus zonder die =

Excuseer, maar...
*headdesk*
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net

Re: [C++] controle op argumenten werkt niet volgens plan
« Reactie #6 Gepost op: 2010/05/11, 22:03:41 »
hoedat zo?
"!" is wel geldig in C++ als "is niet", alleen niet in deze situatie.


ADSL? nee, neem ADHD, dat is pas snel!

Re: [C++] controle op argumenten werkt niet volgens plan
« Reactie #7 Gepost op: 2010/05/12, 12:42:52 »
hoedat zo?
"!" is wel geldig in C++ als "is niet", alleen niet in deze situatie.
'!' is logische ontkenning. '!=' is ongelijkheid. Klein verschilletje.
I use a Unix-based system, that means I'll get laid as often as I have to reboot.
LibSylph
SeySayux.net