2013-08-23 21 views
8

W Fortranie za każdym razem, gdy używa się WRITE, tworzona jest nowa linia. Aby kontrolować działanie programu, który jest wykonywany, chciałbym zapisać na ekranie aktualną wartość zmiennej, ale zawsze w tej samej linii (kasując poprzednią wartość i zaczynając od początku linii). Oznacza to, że cośPisanie w tej samej linii w FORTRAN

1 CONTINUE 
     "update the value of a" 
     WRITE(*,*) a 
     BACKSPACE "screen" 
     GOTO 1 

coś takiego WRITE(*,*,ADVANCE='NO') (nieprawidłowy tak) to nie całkiem to, czego potrzeba : to byłoby napisać wszystkie wartości a jeden po drugim na bardzo długi linii.

+0

Jestem pewien, że 'BACKSPACE' nie ** nie ** robią to, co wydaje się, że to robi. –

Odpowiedz

7

Sztuczka, że ​​pokazano mi za to, co chcesz, jest następujący

do l=1,lmax 
    ...update a... 
    write(*,'(1a1,<type>,$)') char(13), a 
enddo 

<type> gdzie jest twój Format specifier dla a (tj i0 do liczby całkowitej).

Kluczem jest char(13), który stanowi powrót karetki, a $ w deskryptorze formatu. Naprawdę nie wiem, czy istnieje nazwa dla $, po prostu wiem, że to działa do wyświetlania na ekranie - dla wyjścia do pliku dostajesz a w każdej linii.

+0

Uwaga: deskryptor $ nie jest w standardowym języku. – IanH

+0

Podejrzewałem, że to nie jest standard, ale działa dla mnie z ifort 11+ i gfortran 4.6 i 4.7. –

+0

advance = no to "standardowy" zamiennik dla $. Również rozwiązanie zależy od typu terminala, jeśli ta odpowiedź nie działa, wróć i powiedz nam, z jakiego terminalu korzystasz, – agentp

Powiązane problemy