09/03/18 22:07:03
ごめん。
print文かwrite文か、また出力並びをfとするか(f(i),i=1,imax)とするかで、
出力結果が違うのかと思ってやってみたが、違いはないっぽい。
というわけで、>>524をもっとすっきりさせた。
integer::i
real(8)::f(3)
do i=1,3 ; f(i)=i ; enddo
print *, "write(*,*) f"
write(*,*) f
print *, '---'
print *, "write(*,'(f)') f"
write(*,'(f)') f
print *, '---'
print *, "write(*,'(f\)') f"
write(*,'(f\)') f
print *, '---'
print *, "write(*,'(f)',advance='no') f"
write(*,'(f)',advance='no') f
print *, '---'
end
527:デフォルトの名無しさん
09/03/18 22:19:08
↑の結果
write(*,*) f
1.00000000000000 2.00000000000000 3.00000000000000
4.00000000000000 5.00000000000000
---
write(*,'(f)') f
1.0000000000000000
2.0000000000000000
3.0000000000000000
4.0000000000000000
5.0000000000000000
---
write(*,'(f\)') f
1.0000000000000000 2.0000000000000000 3.0000000000000000 4.0000000000000000 5.0000000000000000 ---
write(*,'(f)',advance='no') f
1.0000000000000000
2.0000000000000000
3.0000000000000000
4.0000000000000000
5.0000000000000000 ---
結論
①書式省略すると、適当な位置で改行してくれる(規格で決まってるんかな?)
②書式指定すると、書式の中身が終わる度に改行
③書式に\を付けると改行抑制
④書式にadvance='no'(デフォルトはyes)を付けるとwrite文が終了したときに行う改行を抑制(②との違いに注意)
って感じかな。
改行抑制の\と改行指定の/が混ざるとどんな出力になるんだろう。
528:デフォルトの名無しさん
09/03/18 22:20:24
ごめん、>>526は
real(8)::f(3)
do i=1,3 ; f(i)=i ; enddo
は↓に修正。
real(8)::f(5)
do i=1,5 ; f(i)=i ; enddo
529:デフォルトの名無しさん
09/03/22 01:30:43
>①書式省略すると、適当な位置で改行してくれる(規格で決まってるんかな?)
コマンドプロンプトの右端で改行だと思う
違うかなー
530:デフォルトの名無しさん
09/03/22 10:23:20
>>529
他のコンパイラでは改行しないので、コンパイラのせいだと思います。
>>524-528
ありがとうございます。
参考になりました。
write(*,'(f\)') f
が良さそうですね。
531:デフォルトの名無しさん
09/03/23 15:14:13
>>529
Fortranに限らず、プロンプトのサイズは関係ないよ