2 Stimmen

Zeichenketten in Fortran: Portable LEN_TRIM und LNBLNK?

Ich brauche eine portable Funktion/ein Unterprogramm, um die Position des letzten Nicht-Leerzeichens in einer Zeichenfolge zu ermitteln . Ich habe zwei Möglichkeiten gefunden: LEN_TRIM y LNBLNK . Allerdings scheinen die verschiedenen Compiler unterschiedliche Standards zu haben. Die offizielle Dokumentation für die folgenden Compiler legt nahe, dass LEN_TRIM auf den folgenden Plattformen Teil des Fortran 95-Standards ist:

Es scheint jedoch, dass bei Compilern, die vor dem F95-Standard veröffentlicht wurden, nichts garantiert ist. Meine Erfahrung ist, dass ältere Compiler entweder LEN_TRIM ou LNBLNK , aber nicht unbedingt beides. Meine Lösung bestand darin, Präprozessor-Bedingungen zu verwenden:

#ifdef USE_LEN_TRIM
        iNameLen = LEN_TRIM(cabase)
        iExtLen = LEN_TRIM(caext)
#else
        iNameLen = LNBLNK(cabase)
        iExtLen = LNBLNK(caext)
#endif

und dann passieren -DUSE_LEN_TRIM an den Präprozessor. Allerdings bin ich kein großer Fan von Präprozessor-Bedingungen und zusätzlichen Kompilierzeit-Flags. Haben Sie irgendwelche Vorschläge für eine portable (vor dem Fortran 95-Standard) Funktion, die die Position des letzten Nicht-Leerzeichens in einer Zeichenfolge zu lokalisieren?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X