lunatic82 Geschrieben 22. Oktober 2001 Teilen Geschrieben 22. Oktober 2001 Hallo, ich möchte gerne in C ein Konsole-Programm schreiben (Windows und Linux lauffähig), dass in der Lage ist, mit Parametern aufgerufen zu werden, also z.B. so: xxxx.exe -a was-weiß-ich -b ich-hab-keine-Ahnung nun also meine Frage: Wie kann ich diese Parameter innerhalb des Hauptprogramms abfragen, bzw. wo finde ich Informationen dazu im Netz? Grüße Björn Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Dagegen Geschrieben 22. Oktober 2001 Teilen Geschrieben 22. Oktober 2001 Morgen, schau dir mal folgenden Code an, muesste eigentlich funktionieren: main(int argc, char *argv[]) /* mit Parameter-Uebergabe */ { char cInFileName[13]; if (argv[1] == NULL) /* kein Parameter ubergeben?*/ { printf("\nBitte Parameter eingeben: "); gets(cInFileName); } else { strcpy(cInFileName,argv[1]); } Das Programm schreibt den uebergebenen Paramter in die Variable cInFileName ist der Parameter nicht angegeben so verlangt das Programm nachtraeglich eine eingabe. Vieleicht hilft die das. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 22. Oktober 2001 Teilen Geschrieben 22. Oktober 2001 Die Aufrufparameter, die auf der Kdo-Zeile mitgegeben werden, erhält die Funktion main als nullterminiertes Array von Zeigern auf char-Arrays ( ganz einfach ) Die Anzahl der Parameter wird ebenfalls übergeben. Dies sind die beiden Variablen, die per Konvention int argc // Anzahl char** argv // Array von Pointern auf char* Wenn du main() als int main(int argc, char** argv) definierst, kannst du innerhalb auf die Parameter zugreifen. argv[0] ist dabei der Name, unter dem das Prg aufgerufen wurde. Ruf mal dieses mit verschieden Parametern auf: #include <stdio.h> int main(int argc, char** argv) { printf("%d Parameter uebergeben\n", argc); // Anzahl for(int i = 0; i < argc; i++) // Werte puts(argv[i]); printf("Wert von argv[argc]: %d\n", argv[argc]); // nullterminiert return 0; } <FONT COLOR="#a62a2a" SIZE="1">[ 22. Oktober 2001 09:35: Beitrag 1 mal editiert, zuletzt von captain haddock ]</font> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
haddock Geschrieben 22. Oktober 2001 Teilen Geschrieben 22. Oktober 2001 P.S. Leider ist die cmd.exe von WinDoof, im Gegensatz zu z.B. einer bash, nicht in der Lage Joker aufzulösen. Ein Parameter der Form *.* wird ans Prg unverändert als "*.*" weitergegeben, sodaß du dich, zumindest unter halbgaren Betriebssystemen, selber um solchen Kram kümmern mußt. Mit einer bash hast du dieses Prob natürlich nicht Die kann man sich zur eigenen Erbauung aber auch unter Win**** installieren, zum Glück. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
RDJ Geschrieben 22. Oktober 2001 Teilen Geschrieben 22. Oktober 2001 http://www.c-plusplus.de/index.htm Forum rund um C/C++ und C# <FONT COLOR="#a62a2a" SIZE="1">[ 22. Oktober 2001 09:54: Beitrag 1 mal editiert, zuletzt von ResidentDJ ]</font> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
TingleTangle Geschrieben 22. Oktober 2001 Teilen Geschrieben 22. Oktober 2001 Soweit ich das in Errinerung habe, ist wird der Programmaufruf auch mitgezählt. Somit ist der erste Parameter in argv[1] und nicht in argv[0] Oh sorry der Captain hat des ja schon angemerkt. <FONT COLOR="#a62a2a" SIZE="1">[ 22. Oktober 2001 11:40: Beitrag 1 mal editiert, zuletzt von DocNeo ]</font> Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.