我正在尝试使用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)

我该如何编译?

最佳答案

尝试将格式字符串I更改为Iw,其中w为正数。与E相同,仅使用Ew.d
有关说明,例如,请参见以下链接:
http://www.cs.mtu.edu/~shene/COURSES/cs201/NOTES/chap05/format.html

不过要当心:使用I3写出1234可能会打印***,因此请确保您的格式足够宽。

编辑:有关如何避免整数格式问题的信息,请参见@ M.S.B。的答案。

关于fortran - 错误: Nonnegative width required in format string at (1),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11037954/

10-11 16:38