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
}
Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge
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.
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....
>> 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