如何在打印语句中创建 space?

How do I create a space in a print statement?

我有一些代码以前在 运行 我的 Linux 盒子上使用 IDL 时可以使用。当我在 Windows 框上 运行 IDL 时,我不确定为什么格式发生了变化。

具体来说,问题似乎是打印语句没有在值之间创建 space。

OPENW, prof2d, outfilename+'.prf', /GET_LUN
printf, prof2d, numalts, altstart, delalt, numlats, latstart,dellat 
printf, prof2d, format='(1(f3.1),500(i))', 0.0, findgen(num)+1.0
for i=0, numlats-1 do begin
printf, prof2d, FORMAT='(1(i),500(e15.8))',i+1, p2d(i,*)
endfor   
CLOSE, prof2d & FREE_LUN, prof2d
popd

这行似乎有问题: printf, prof2d, 格式='(1(i),500(e15.8))',i+1, p2d(i,*)

linux 框产生:

  1 0.00000000e+00 0.00000000e+00 0.00000000e+00....9.17620019e+09

而 windows 框产生:

1 0.00000000e+000.00000000e+000.00000000e+00....9.17620019e+09

如有任何帮助,我们将不胜感激。

此致,

亚历克斯

在你的例子中:

printf, prof2d, FORMAT='(1(i),500(e15.8))',i+1, p2d(i,*)

"e15.8"表示指数记数法("e"),数字总共有15个space,小数点后8位。这就是 Linux 框似乎在做的事情,因为“0.00000000e+00”只有 14 个字符长,在值之间给出一个 space。我不知道为什么 Windows 框会做一些不同的事情。但要给 space 之间的值增加 15 到 16 或更多,如:

printf, prof2d, FORMAT='(1(i),500(e16.8))',i+1, p2d(i,*)

这将在 Linux 上的值之间给出两个 spaces,但应该对 Windows 上的你有所帮助。