Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge

Problem mit Kommandozeilenparametern in C

SeeksTheMoon / 3 Antworten / Baumansicht Nickles

Moin Leute!
Ich habe ein kleines Problem mit Kommandozeilenparametern in C.
Warum klappt folgendes Konstrukt nicht?
Dabei soll per Kommandozeilenparameter -nologo übergeben werden, damit
in den else Zweig gesprungen wird. Man kann jedoch eingeben was man will, das Programm setzt immer nologo auf 1, obwohl das ja bei -nologo nicht passieren sollte.
Der Fehler ist garantiert trivial, aber ich finde ihn einfach nicht.
Danke im Voraus.

void main(int anzahl,char**parameter)
{
int nologo=0;

if (parameter[1]==-nologo)
nologo=1;
else
.....blablabla
}

bei Antwort benachrichtigen
(Anonym) SeeksTheMoon „Problem mit Kommandozeilenparametern in C“
Optionen

der übersetzt das? glaub ich nicht!

parameter[1]==-nologo

da sitzt der wurm. Eigentlich müsste er irgendwas wie "-nologo kenn ich nicht" schreien.

lösung:
#include

void main(int anzahl,char**parameter)
{
char* cNoLogo = "-nologo"

if (strcmp(cNoLogo, parameter[1]))
{
// parameter[1] war nicht -nologo
}
else
{
// parameter[1] war -nologo
}

}

Fehlerursache:

== vergleicht nur ob die ADRESSEN identisch sind. Und das sind sie nicht.

bei Antwort benachrichtigen
SeeksTheMoon (Anonym) „der übersetzt das? glaub ich nicht! parameter 1 -nologo da sitzt der wurm....“
Optionen

jo, danke.
Warum bin ich nicht von alleine darauf gekommen??
Naja, man lernt halt nie aus....

P.S. Micro$oft Visual C++6 übersetzt alles....

bei Antwort benachrichtigen
thomas woelfer (Anonym) „der übersetzt das? glaub ich nicht! parameter 1 -nologo da sitzt der wurm....“
Optionen

>> parameter[1]==-nologo

er hatte eine zeile oder so vorher 'int nologo'. parameter[1] ist ein dword und evaluiert dann zu 'int' bzw. long. natuerlich kann man dann if( long == int ) hinschreiben...

WM_FYI
thomas woelfer

this posting contains no tpyos.
bei Antwort benachrichtigen