Anzahl Argumente der Kommandozeile
-
Ein bischen Eigeninitiative wäre nicht schlecht.
#include <iostream> int main(int argc, char** argv) { std::cout << "Argumente uebergeben: " << argc << '\n'; }
-
Ethon_notloggedin schrieb:
Das erste Argument ist immer das Programm selbst, dh. argc ist mindestens 1.
Ethon schrieb:
std::cout << "Argumente uebergeben: " << argc << '\n';Mich dünket die 1 müsste noch ihre Rolle spielen.

-
#include <iostream> using namespace std; int main(int argc, char* argv[]) { cout << "Aufruf des Programms = " << argv[0] << endl; cout << (argc - 1) << " weitere Argumente wurden main() übergeben: \n"; int i = 1; while(argv[i]) { cout << argv[i++] << endl; } }
-
Overflow schrieb:
#include <iostream> using namespace std; int main(int argc, char* argv[]) { cout << "Aufruf des Programms = " << argv[0] << endl; cout << (argc - 1) << " weitere Argumente wurden main() übergeben: \n"; int i = 1; while(argv[i]) { cout << argv[i++] << endl; } }Hoffe du hast for-Schleifen gelernt:
#include <iostream> int main(int argc, char* argv[]) { std::cout << "Aufrufs-Verzeichniss des Programms: " << argv[0] << '\n' << argc - 1 << " weitere Argumente wurden main() übergeben: \n"; for(int i(1) ; i < argc ; ++i) std::cout << argv[i] << '\n'; }
-
Hacker schrieb:
Hoffe du hast for-Schleifen gelernt:
Nö, wozu?
#include <iostream> int main(int argc, char *argv[]) { std::cout << "Aufrufs-Verzeichnis(s) des Programms: " << argv[0] << '\n' << argc - 1 << " weitere Argumente wurden main() übergeben: \n"; while (++argv) std::cout << *argv << '\n'; }
-
whiiler schrieb:
Hacker schrieb:
Hoffe du hast for-Schleifen gelernt:
Nö, wozu?
#include <iostream> int main(int argc, char *argv[]) { std::cout << "Aufrufs-Verzeichnis(s) des Programms: " << argv[0] << '\n' << argc - 1 << " weitere Argumente wurden main() übergeben: \n"; while (++argv) std::cout << *argv << '\n'; }Kann dir gleich sagen, dass das Abstürzt. Du überprüfst nur den Zeiger. Der ist immer true (> 0).
Edit: Das funktioniert aber, da haste aber Recht:
#include <iostream> int main(int argc, char *argv[]) { std::cout << "Aufrufs-Verzeichnis(s) des Programms: " << argv[0] << '\n' << argc - 1 << " weitere Argumente wurden main() übergeben: \n"; while (*++argv) std::cout << *argv << '\n'; }Oder so:
#include <iostream> int main(int argc, char *argv[]) { std::cout << "Aufrufs-Verzeichnis(s) des Programms: " << argv[0] << '\n' << argc - 1 << " weitere Argumente wurden main() übergeben: \n"; while (--argc) std::cout << argc << ": " << argv[argc] << '\n'; }
-
Sry ja, so meinte ich das.
(Btw: könntest du das \201 wieder in ein ü umändern, sonst muss ich mich glaub übergeben)
-
whiiler schrieb:
(Btw: könntest du das \201 wieder in ein ü umändern, sonst muss ich mich glaub übergeben)
+1
Ich habs dir schon oft genug gesagt Hacker, was ist daran so schwer?
-
Du editierst mir zu schnell, aber bei deiner zweiten Variante fehlt noch was bei argv.
-
whiiler schrieb:
Sry ja, so meinte ich das.
(Btw: könntest du das \201 wieder in ein ü umändern, sonst muss ich mich glaub übergeben)
Wieso? Was hast du gegen Escape-Sequenzen (Gut, ja - es war nur ein Beispiel. Aber trotzdem)?
-
Hacker schrieb:
Was [...] hast du gegen Escape-Sequenzen [...]?
Vielleicht dass sie nur mit ANSI-Code (der unnötig ist und den sowieso niemand verwendet) funktionieren und mit anderen Zeichensätzen nicht?
-
Also. Was genau soll ich tun? Einfach 'ue' schreiben?
-
whiiler schrieb:
Hacker schrieb:
Was [...] hast du gegen Escape-Sequenzen [...]?
Vielleicht dass sie nur mit ANSI-Code (der unnötig ist und den sowieso niemand verwendet) funktionieren und mit anderen Zeichensätzen nicht?
Das stört mich nichtmal. Mich stört viel eher, dass ich, um die Ausgabe verstehen zu können, wissen muss, welches Zeichen das ist.
-
whiiler schrieb:
Hacker schrieb:
Was [...] hast du gegen Escape-Sequenzen [...]?
Vielleicht dass sie nur mit ANSI-Code (der unnötig ist und den sowieso niemand verwendet) funktionieren und mit anderen Zeichensätzen nicht?
Haha, ich bin sicher, Escape-Sequenzen gibt es auch mit anderen Sprachen

-
314159265358979 schrieb:
whiiler schrieb:
Hacker schrieb:
Was [...] hast du gegen Escape-Sequenzen [...]?
Vielleicht dass sie nur mit ANSI-Code (der unnötig ist und den sowieso niemand verwendet) funktionieren und mit anderen Zeichensätzen nicht?
Das stört mich nichtmal. Mich stört viel eher, dass ich, um die Ausgabe verstehen zu können, wissen muss, welches Zeichen das ist.
Das müsstest du mittlerweile aber auswendig können.
-
Nö. Ich habe besseres zu tun, als oktale ASCII Werte auswendig zu lernen.
-
Hacker schrieb:
Overflow schrieb:
#include <iostream> using namespace std; int main(int argc, char* argv[]) { cout << "Aufruf des Programms = " << argv[0] << endl; cout << (argc - 1) << " weitere Argumente wurden main() übergeben: \n"; int i = 1; while(argv[i]) { cout << argv[i++] << endl; } }Hoffe du hast for-Schleifen gelernt:
#include <iostream> int main(int argc, char* argv[]) { std::cout << "Aufrufs-Verzeichniss des Programms: " << argv[0] << '\n' << argc - 1 << " weitere Argumente wurden main() übergeben: \n"; for(int i(1) ; i < argc ; ++i) std::cout << argv[i] << '\n'; }Hmm, wüsste jetzt nicht was so schlimm an meiner Lösung ist. Funktioniert doch einwandfrei.
-
Overflow schrieb:
Hmm, wüsste jetzt nicht was so schlimm an meiner Lösung ist. Funktioniert doch einwandfrei.
Wenn du so weiter denkst... bitte, ich bin sicher 's macht Spaß kryptischen Code zu warten

Nein, ich mein ja nur. Ne for Schleife wäre in diesem Fall genau das, was du versuchst nachzuahmen.
-
Overflow schrieb:
Hmm, wüsste jetzt nicht was so schlimm an meiner Lösung ist. Funktioniert doch einwandfrei.
"funktioniert" heißt nur, dass der Compiler es frisst und das Programm nicht abstürzt. Dass der Code lesbar und wartbar ist, ist aber mindestens genauso wichtig. Dein Beispiel steht arg am Wegesrand des Üblichen und macht sich grade auf den Weg durch die Zone des Seltsamen und WTF-Land in Richtung der Wartungswüste

-
pumuckl schrieb:
Overflow schrieb:
Hmm, wüsste jetzt nicht was so schlimm an meiner Lösung ist. Funktioniert doch einwandfrei.
"funktioniert" heißt nur, dass der Compiler es frisst und das Programm nicht abstürzt.
Mehr. Es Funktioniert heißt, dass es technisch gesehen nichts mehr zu verbessern gibt. Das Programm arbeitet gemäß aller Erwartungen. (Natürlich hast du Recht mit dem Rest!)