6

我正在尝试使用 gfortran 编译一段代码,但失败并出现以下错误:

Error: Nonnegative width required in format string at (1)
../src/powmes.f90:410.20:
     write(lunit,'(I,E,E,E)') wavenum(k),power(k),nmodes(k),errorexpan(k)

414   if (filepower_fold(1:1) /= '#') then
415      fileout=trim(filepower_fold)//'.waven'
416      if (verbose) write(*,*) 'Output '//trim(fileout)
417      open(file=fileout,form='formatted',status='unknown',unit=lunit,err=2)
418      do k=0,ngrid/2
419         do ifold=0,nfoldpow-1
420            write(lunit,'(I,$)') waven(k,ifold)
421         enddo
422         write(lunit,'(I)') waven(k,nfoldpow)
423      enddo
424      close(lunit)

我怎样才能编译这个?

4

2 回答 2

10

正如已经回答的那样,您需要指定宽度。像 ES14.5 这样的东西可能适用于浮点格式。整数格式有一个捷径:I0 将导致编译器使用所需的位数。

于 2012-06-14T18:53:56.760 回答
8

尝试将格式字符串更改I为正数。与 相同,仅使用。 有关解释,请参见例如此链接: http ://www.cs.mtu.edu/~shene/COURSES/cs201/NOTES/chap05/format.htmlIwwEEw.d

但请注意:使用,例如,I3写出 1234 可能会打印***,因此请确保您的格式足够宽。

编辑:请参阅@MSB 关于如何避免整数格式问题的答案。

于 2012-06-14T18:17:06.637 回答