lunatic82 Geschrieben 22. Oktober 2001 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
Dagegen Geschrieben 22. Oktober 2001 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
haddock Geschrieben 22. Oktober 2001 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
haddock Geschrieben 22. Oktober 2001 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
RDJ Geschrieben 22. Oktober 2001 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
TingleTangle Geschrieben 22. Oktober 2001 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
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.