Eine Zeichenfolge mit Leerzeichen in Fortran lesen

8

Die Verwendung von read (Sternchen, Stern) in Fortran scheint nicht zu funktionieren, wenn die vom Benutzer zu lesende Zeichenfolge Leerzeichen enthält. Betrachten Sie den folgenden Code:

%Vor%

Wenn der Benutzer die Zeichenfolge "Hallo, mein Name ist John Doe" eingibt, wird nur "Hello" in der Eingabe gespeichert; alles nach dem Leerzeichen wird ignoriert. Meine Annahme ist, dass der Compiler annimmt, dass "Hallo" das erste Argument ist und dass "mein" das zweite ist. Um also die anderen Wörter zu erfassen, müssten wir etwas wie lesen (, ) input1, input2, input3 ... usw. Das Problem bei diesem Ansatz ist, dass wir für jede Eingabe große Zeichen-Arrays erstellen müssen und genau wissen müssen, wie viele Wörter eingegeben werden. Gibt es einen Weg um dies ?? Eine Funktion, die tatsächlich den gesamten Satz, Leerzeichen und alle liest? Vielen Dank!

    
Gautam 12.06.2011, 01:47
quelle

2 Antworten

21
%Vor%

... liest eine Textzeile mit der maximalen Länge 100 (genug für die meisten praktischen Zwecke) und schreibt sie Ihnen zurück. Ändern Sie nach Ihren Wünschen.

    
Rook 12.06.2011 02:16
quelle
6

Versuchen Sie anstelle von read(*, *) read(*, '(a)') . Ich bin kein Fortran-Experte, aber das zweite Argument für read ist der Formatbezeichner (entspricht dem zweiten Argument für sscanf in C). * gibt das Listenformat an, das nicht gewünscht wird. Sie können auch a14 sagen, wenn Sie beispielsweise 14 Zeichen als Zeichenfolge lesen möchten.

    
John Zwinck 12.06.2011 02:11
quelle