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!
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.