Programmieren - alles kontrollieren 4.934 Themen, 20.613 Beiträge

Ex. in C/C++ auch alternative 'main'-Funktion, die ...

Mdl / 9 Antworten / Flachansicht Nickles

Ex. in C/C++ auch alternative 'main'-Funktion, die ...

... die Argumente, die dem Programm von der Konsole übergeben werden NICHT interpretiert?

Eine C/C++ Hauptfunktion sieht ja in der Regel in etwa so aus:

int main(int argc, char *argv[]);

Angenommen, ich rufe von der Konsole mein Programm MyPrg.exe wie folgt auf

myprg.exe  Hello      World

so landet die Programmausführung irgendwann bei obiger main()-Funktion und die Werte sind

  argc==3

  argv[0]==myprg.exe, argv[1]="Hello" und argv[2]="World"

Ich kann also mit main() nicht ermitteln, wieviele Leerzeichen zwischen Hello und World stehen. Das könnte irgendeine vorgeschaltete Instanz.

Gibt es vielleicht doch eine Möglichkeit? Wird die gesamte Aufrufsequenz vielleicht in einer main()-vorgeschalteten Funktion innerhalb C/C++ komplett als ein Argument "myprg.exe  Hello      World' übergeben? Ich meine, ich hätte so ewas vor langer Zeit mal gelesen.

Wenn diese Interpretation bereits von der Konsole komplett interpretiert würde, würde es gar keine Möglichkeit geben den ECHO-Befehl als C-Prg. zu realisieren.Vielleicht gibt es die auch gar nicht - ECHO ist ja ein interner Befehl (d.h. es gibt kein ECHO.EXE) . Vielleicht ja aber doch...

Viele Grüße,

Mdl

P.S. Ich benutze den Embarcadero's C++Builder

bei Antwort benachrichtigen
Mdl Borlander „Das macht bereits der Kommendozeileninterpreter der das ...“
Optionen
Das macht bereits der Kommendozeileninterpreter

Hatte ich fast befürchtet/vermutet.

Schön wäre natürlich eine Möglichkeit im Kommandozeileninterpreter dieses (ansich ja sinnvolle) Verhalten kurzzeitig zu deaktivieren (und nach dem Prg.aufruf) erneut wieder zu aktivieren?

So könnte z.B. in argv[1] dann die gesamte Parameter-Aufrufsequenz stehen... (*)

Dann könnte man z.B. selbst sein eigenes Echo schreiben...

Wenn Du Parameter mit Leerzeichen übergeben willst, dann musst Du diese in Anführungszeichen einschließen.

Ja, und im Normalfall ist das ja auch gar kein Problem. Wenn man aber - wie ich in letzter Zeit - viele sich gegenseitig aufrufende Batchfiles hat, ist das dann doch nicht so einfach.

Werde vermutlich in nächster Zeit dazu einen separaten Thread erstellen. 

Gruß,

Mdl

(*) Mir kommt gerade eine Idee, die ich aber in einem separaten Posting schreibe, sonst geht sie vielleicht unter...

bei Antwort benachrichtigen