Seite 1 von 1
Parameterverarbeitung
Verfasst: So Sep 05, 2010 6:33 pm
von naums
laut dem Tutorial von hier:
http://www.c-plusplus.de/cms/modules.ph ... &nocache=1 sollte man Parameter ans Programm folgendermaßen übergeben können:
und folgendermaßen verarbeiten können:
Code: Alles auswählen
#include <stdio.h>
#include <stdlib.h>
int main (int *argc, char *argv)
{
if (argv[1]=="-b")
{
printf("Hello World");
}
}
soweit so gut. Allerdings funktioniert bei mir die if Anweisung nicht. Also: Der Parameter steht im Arrayelement argv[1] drin, aber die if Anweisung verläuft negativ, sodass der Text "hello world" in dem Fall nicht ausgeben wird, selbst wenn ich den Parameter so übergeben habe. Was mache ich falsch? bitte um hilfe.
Re: Parameterverarbeitung
Verfasst: So Sep 05, 2010 6:42 pm
von Xin
Du vergleichst zwei Zeiger und die sind nicht identische. Beide Zeiger zeigen zwar auf den gleichen Text "-b", aber eben nicht auf den selben!
Du musst die Strings vergleichen:
strcmp.
Ansonsten siehe hier:
http://www.proggen.org/doku.php?id=c:fu ... :parameter
Re: Parameterverarbeitung
Verfasst: So Sep 05, 2010 6:47 pm
von naums
Veränderter Code:
Code: Alles auswählen
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char* argv[])
{
printf("\n hallo Programm\n\n");
if (strcmp(argv[0],"-b"))
{
printf("Hello World");
}
printf("\n\n wie gehts?\n");
}
natürlich muss argv auch ein Array von zeigern sein, und argc ist kein array. Jetzt klappts prima. Danke Xin ^^
Edit:
Code: Alles auswählen
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char* argv[])
{
printf("INIMaker wird gestartet\n");
int i=0;
while (argc>i)
{
if (strcmp(argv[i], "-v")==true)
{
printf("\nINIMaker Version 2.00\n");
printf("von Naums Project 2010\n");
}
if (strcmp(argv[i], "-h")==true)
{
printf("\n##Hilfedatei##\n");
printf("-v zeigt die Version an\n");
printf("-h -? zeigt diesen Hilfetxt an\n");
printf("-a fügt einen Datensatz hinzu\n");
printf("-e löscht einen Datensatz\n");
printf("-m eine .ini Datei erstellen\n");
printf("\nVielen Dank, dass sie INIMaker benutzen\n");
}
if (strcmp(argv[i], "-?")==true)
{
printf("\n##Hilfedatei##\n");
printf("-v zeigt die Version an\n");
printf("-h -? zeigt diesen Hilfetxt an\n");
printf("-a fügt einen Datensatz hinzu\n");
printf("-e löscht einen Datensatz\n");
printf("-m eine .ini Datei erstellen\n");
printf("\nVielen Dank, dass sie INIMaker benutzen\n");
}
i++;
}
return 0;
}
warum werden die teile von if immer ausgeführt, egal ob der Parameter angegebn ist oder nicht?
Re: Parameterverarbeitung
Verfasst: So Sep 05, 2010 7:43 pm
von Xin
Weil Du Dir den Rückgabewert von strcmp nicht durchgelesen hast ^^
Re: Parameterverarbeitung
Verfasst: So Sep 05, 2010 7:47 pm
von naums
so klappts. Nochmal Danke.
