Komandozeilenargument in Eclipse
-
Hallo, ich versuche gerade in C mit Komandozeilenparametern umzugehen, dabei möchte ich, dass mein Programm drei Funktionen erfüllt.
Programmstart mit Parameter: msg1 -> Ausgabe Nachricht 1
Programmstart mit Parameter: msg2 -> Ausgabe Nachricht 2
Programmstart ohne Parameter: -> Ausgabe Nachricht 3Letzteres funktioniert leider nur wenn ich als Parameter eine sinnlose aneinanderreihung von Buchstaben oder Sonderzeichen setze. z.b. msg3.. oder xxx. Lasse ich den Parameter leer, passiert einfach gar nichts, das Consolenfenster in Eclipse bleibt leer. Im Terminalfenster von Ubuntu passiert auch nichts.
Auch sehr kurios finde ich, dass das ganze zu Anfang 2,3 Mal funktioniert hat.
#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int narg, char *arg[]) { // Vergleichskonstanten für Komandozeilenparameter const char vgl1[] = { "msg1" }; const char vgl1[] = { "msg2" }; // Aufruf Nachricht 1 if (strcmp(arg[1], vgl1) == 0) { printf("-> Aufruf mit Parameter msg1\n"); } // Aufruf Nachricht 2 else if (strcmp(arg[1], vgl2) == 0) { printf("-> Aufruf mit Parameter msg2\n"); } // Aufruf Nachricht 3 else { printf("-> Aufruf ohne Parameter\n"); } return 0; }
Für eure Hilfe wäre ich sehr dankbar!
-
Überprüfe anhand des Parameters 'narg' die Anzahl der übergebenen Kommandozeilenparameter:
if (narg > 0) { printf("-> Aufruf mit Parameter\n"); } else { printf("-> Aufruf ohne Parameter\n"); }
-
narg ist zumindest immer größer als 0, da der Programmname in arg[0] steht.
BTW: die üblichen (historische) Namen sind
argc
undargv
ARGument Counter und ARGument Vector
(falls dir das mal über den Weg läuft)
-
Das hat schon ganz gut geholfen, wichtig ist wohl noch zu erwähnen, dass als 1. Argument bei mir immer der Programmname steht, wodurch ich prüfen muss ob zwei Argumente in narg vorhanden sind.
if (narg > 1) { printf("-> Aufruf mit Parameter\n"); } else { printf("-> Aufruf ohne Parameter\n"); }
Danke für deine Hilfe!