Zum Inhalt springen

Konsole-Programm mit Parametern aufrufen...


Empfohlene Beiträge

Geschrieben

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

Geschrieben

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.

Geschrieben

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>

Geschrieben

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 :D

Die kann man sich zur eigenen Erbauung aber auch unter Win**** installieren, zum Glück.

Geschrieben

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>

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...