Frage zu main(**********) {...}
-
int main(int argc, char *argv[])
1. Wieso wird in den meißten Codes der Funktion main ein Integer und ein Pointer auf ein char-Array in dieser Forum übergeben?
2. Was lässt sich damit tun/anrichten??
3. Sind die Namen der Argumente per Konvention so festgelegt worden?
thx gleich mal!
-
die sind per ansi-c-standard so festgelegt. sie enthalten die kommondozeilenparameter, beim aufruf des programms übergeben worden sind.
wenn zb das programm copy.exe in der konsole mit
COPY DATEI.TXT KOPIE.TXT
gestartet wird, dann enthalten die parameter der main-funktion von copy.exe folgende werte:
argc=3; // kommandozeile besteht aus 3 worten argv[0]="COPY"; // argv[0] enthält immer den programmnamen (systemabhängig; unter windows dateiname mit vollem pfad) argv[1]="DATEI.TXT"; // erstes argument argv[2]="KOPIE.TXT"; // zweites argument argv[3]=NULL; // die liste wird immer mit einem null-zeiger abgeschlossen
der int-rückgabewert ist ein fehlercode. normalerweise ==0, wenn die programmausführung fehlerfrei war; !=0 sonst. dieser fehlercode ist betriebssystemabhängig. der header stdlib.h definiert aber zwei standard-rückgabewerte EXIT_SUCCESS und EXIT_FAILURE. also
#include<cstdlib> return EXIT_SUCCESS; return EXIT_FAILURE;
-
Alles klar soweit,
NUR: Wenn ich diesen Code compiliere wird keine Kopie von "Datei.txt" erstellt:Das ist der Code:
#include <iostream> #include <cstdlib> using namespace std; int main(int argc, char *argv[]) { argc=3; // kommandozeile besteht aus 3 worten argv[0]="COPY"; // argv[0] enthält immer den programmnamen (systemabhängig; unter windows dateiname mit vollem pfad) argv[1]="DATEI.TXT"; // erstes argument argv[2]="KOPIE.TXT"; // zweites argument argv[3]=NULL; // die liste wird immer mit einem null-zeiger abgeschlossen return EXIT_SUCCESS; }
Woran liegt das?
("Datei.txt" habe ich natürlich erstellt)Danke für deine schnelle Antwort!
Anbei:
Kann man auch argv[3]="\0"; schreiben? Jedenfalls wird es fehlerfrei compiliert.
-
Ne, mal im Ernst... Acker' erstmal ein Tutorial durch. So gibt das nichts.
-
NUR: Wenn ich diesen Code compiliere wird keine Kopie von "Datei.txt" erstellt:
Das liegt daran, dass C++ mist und veraltet ist.
Ich habe gestern z.B. folgendes Programm programmiert.int main() { doWhatIMean(); }
Ergebnis: Lies sich nicht übersetzen!
Habe dann bis nachts um drei dran rumgefummelt. Am Ende wurde es zwar übersetzt, hat aber überhaupt nicht das gemacht, was ich mir gedacht habe.Fazit: C++ ist derart veraltet, dass man die Sprache erst lernen muss, bevor man damit was anfangen kann.
-
-
Es werden Argumente an die MainFkt. übergeben.
Du sollst sie also nicht in der Fkt. angeben.Und wunder dich nicht, dass nix passiert, wenn
du keine DoWhateverIWant()-Fkt. aufrufst.
-
mit
int argv
wird die anzahl der parameter bestimmt.
mit
char* argv[] //oder char** argv
werden die parameter selbst angegeben.