Fortran: `READ(*,*)` != Command-line Argumente. Wie verwenden von Befehlszeile-Argumente?

GCC version 4.6

Das Problem: einen Weg Zu finden, um die feed-in-Parametern und der ausführbaren Datei, sagen a.out von der Befehlszeile aus - genauer gesagt-feed in ein array von double-precision-zahlen.

Versuch: Mit der READ(*,*) Befehl, die älteren in der standard:
Programm test.f -

PROGRAM MAIN  
     REAL(8)    :: A,B  
     READ(*,*) A,B
     PRINT*, A+B, COMMAND_ARGUMENT_COUNT()
END PROGRAM MAIN

Ausführung -

$ gfortran test.f
$ ./a.out 3.D0 1.D0

Funktionierte dies nicht. Auf ein bisschen soul-searching, festgestellt, dass

$./a.out
3.d0,1.d0
   4.0000000000000000                0

funktioniert, aber die zweite Zeile ist ein Eingabe-prompt, und das Ziel, dies in eine Zeile ist nicht erreicht. Auch die COMMAND_ARGUMENT_COUNT() zeigt, dass die zahlen fließen in die Eingabe-Aufforderung nicht wirklich zählen "command line arguments', im Gegensatz zu PERL.

  • Sie konnte tun 'echo "3 1" | ein.out " mit Ihrem code. Nicht, dass ich würde empfehlen, aber vielleicht hilft Sie verstehen, was read(*,*) ist.
  • Es funktioniert!! danke @george . Ich habe versucht ./a.out | echo '3.1d0 1.d0'früher .. und es hat nicht funktioniert. Und es ist besser für meine Zwecke, weil auf diese Weise ein format muss nicht angegeben werden, erscheint natürlicher .. und allgemein zu mir!
Schreibe einen Kommentar