2015-06-30 29 views
6

Mam następujący kod, ale to nie działa:Łączenie dwóch ciągów nie działa

CHARACTER*260 xx, yy, zz  
    xx = 'A' 
    yy = 'B' 
    zz = xx // yy 

Kiedy debugowanie mojego kodu w Visual Studio

  • zmienna xx zawiera „A '
  • zmienna yy zawiera 'B'
  • zmienna zz zawiera 'A'

Dlaczego zz nie zawiera "AB"?

Odpowiedz

18

Zdefiniowałeś xx na 260 znaków. Przypisanie krótszej litery literału spowoduje dopełnienie pustymi literami. Tak więc xx zawiera A i 259 spacji. yy zawiera B i 259 spacji. Tak więc połączony ciąg znaków byłby 'A' + 259 spacji + 'B' + 259 spacji, łącznie 520 znaków.

Od zz ma tylko 260 znaków długości, reszta jest przycinana.

Co ty próbujesz zrobić to osiągnąć poprzez

zz = trim(xx) // trim(yy) 

trim() usuwa końcowe spacje z ciągów znaków.

+3

Obramowanie yy jest niepotrzebne, ale nie powoduje również problemu. – Fortranner