小编Siu*_*Siu的帖子

Fortran 77中的字符串数组

我有一个关于Fortran 77的问题,但我找不到解决方案.

我正在尝试存储一个字符串数组,定义如下:

character matname(255)*255
Run Code Online (Sandbox Code Playgroud)

Wich是255个长度为255的字符串.

后来我从文件中读取了名称列表,并按如下方式设置了数组的内容:

matname(matcount) = mname
Run Code Online (Sandbox Code Playgroud)

编辑:实际上,mname值是按mname = 'AIR'类型进行编码character*255,它是matadd()执行前一行的函数的参数.但这仅用于测试,将来它将从文件中读取.

后来我想打印它:

write(*,*) matname(matidx)
Run Code Online (Sandbox Code Playgroud)

但它似乎打印了所有255个字符,它打印我分配的字符串和大量的垃圾.

  • 这就是我的问题,我怎么知道存储的字符串的长度?
  • 我应该拥有所有长度的另一个阵列吗?
  • 我怎么知道字符串读取的长度?

谢谢.

string fortran character fortran77

7
推荐指数
2
解决办法
2万
查看次数

Fortran 77 POSIX是否符合要求? - 写二进制文件

我正在尝试从fortran编写二进制数据文件,但我发现常规文件接口非常有限,我想知道Fortran是否具有POSIX编译功能.

我找到了这个标准:IEEE 1003.9-1992,但我不知道它是否得到大多数常见编译器的完全支持(或者如果我必须激活任何标志).我找不到任何实用信息,你能给我任何建议吗?

顺便说一下,我正在尝试编写图像文件,首先我要尝试使用tga/pgm.另外,我不想向外部库添加任何依赖,谢谢!

解:

最后我能够写出ppm文件,我不得不避免在内部循环结束时打印换行符,最终的代码是这样的:

      subroutine imgwrite()
      implicit none
*     ******************************************************************
      include 'image.f'
*     ******************************************************************
      integer x, y, i

      write(imgunit, '(A)') 'P3'
      write(imgunit, '(I4)') imgwidth
      write(imgunit, '(I4)') imgheight
      write(imgunit, *) 255

      do 10 y=1, imgheight
        do 20 x=1,imgwidth
          write(imgunit,100) (int(imgpixels(x,y,i)*255D0), i=1,3)
20      continue
        write(imgunit,110)
10    continue


100   FORMAT(3(I4),$)
110   FORMAT((/))

      return
      end
Run Code Online (Sandbox Code Playgroud)

没有人在FORTRAN中提供有关POSIX的任何信息.

谢谢.

posix image file fortran77

2
推荐指数
1
解决办法
874
查看次数

标签 统计

fortran77 ×2

character ×1

file ×1

fortran ×1

image ×1

posix ×1

string ×1