argc und argv ??
-
Zu 2: Kommandozeilen-argumente nennt sich das.
aber ist das array nicht argc-1 groß?
(bei argc = 5 ist doch argv[4] das letzte element)
-
manu1984 schrieb:
(bei argc = 5 ist doch argv[4] das letzte element)
argv[argc-1] ist das letzte Element, in dem noch etwas drinsteht. Dahinter steht noch ein mit NULL gefülltes Element.
-
manu1984 schrieb:
(bei argc = 5 ist doch argv[4] das letzte element)
(Offenbar) gängiges Mißverständnis:
Zähl doch mal (am besten an den Fingern), wieviele Elemente argv[0] ... argv[4] sind und vergleiche das Ergebnis mit argc
-
shit. stimmt!!!!
aber wir meinten ja das gleicheaber gut, dass wir gerade den beitrag haben:
so wie oben beschrieben kann ich ja extern diese elemente bekommen.
kann ich mit einem C-programm allerdings auch so eine kommando-zeile bauen?also kurz gesagt:
ich führe ein c-programm mit kommando-zeile aus
und das programm generiert mir dann eine neue kommandozeile.
geht sowas?
-
Du kannst an system(), WinExec() und ähnliche Funktionen theoretisch beliebige Strings übergeben, die vom System als Kommandozeile interpretiert werden (und für das Zielprogramm auch wieder in argc/argv aufgedröselt werden).
-
okay,
also z.b.system("zcat abc.gz > abc");
klappt wunderbar (also wenn ich die 2 dateien abc.gz und abc statisch angebe).
system("zcat %s > %s",argv[1],argv[2]);
mag er nicht. da meckert er rum, zuviele argumente in system()
-
Dann mußt du die Befehlszeile halt erst zusammenbauen (z.B. per sprintf()) und dann an system() übergeben
char cmd[CMD_SIZE]; sprintf(cmd,("zcat %s > %s",argv[1],argv[2]); system(cmd);
-
ach herrje, natürlich!!!!!!
danke!!!!
-
hi
ich hätte jetzt mal ne blöde frage
aber wie ruft man denn ein programm mit parametern auf??
-
Unices:
./program param1 param2 ...
Windows:
program.[exe|com|bat|...] param1 param2 ...
greetz, Swordfish