如何在标准F77中修剪字符数组?

问题描述 投票:1回答:1

我正在读取带有文本标题的ASCII数据文件。 (标题包含有关数据运行的信息。)我想添加每个数据文件的一些列,然后将结果写入另一个数据文件,但保留每个文件的标题。问题是,我事先不知道标题行的长度是多少。如果我使用一个长字符变量(例如字符* 400)来确保我得到整个标题行,那么我的新数据文件有很多我不想要的空格。基本上,我想做TRIM(HeaderVariable),但我无法使用TRIM。有什么建议?有没有办法只写一个CrLF?我想到使用一个字符数组* 1,并在读取它时测试每个字符然后编写它,但是......哇,这太复杂了。在标准F77中有更简单的方法吗? [编辑:自我回答感动。起初不能这样做,因为代表太低了。

text fortran character trim fortran77
1个回答
1
投票

我得到了答案。张贴在这里帮助他人。下面的LENGTH函数来自http://www.star.le.ac.uk/~cgp/prof77.html#tth_sEc7一旦你有了这个LENGTH函数,实现你自己的TRIM函数是微不足道的。从功能上来说,这与我最初的可怕想法没什么不同,但它更漂亮。

LEN LEN函数接受一个字符参数,并将其长度作为整数返回。参数可以是局部字符变量或数组元素,但这只会返回一个常量。 LEN在字符伪参数(和字符函数名称)的长度可能从调用单元传递的过程中更有用,因此每个过程调用的长度可能不同。 LEN返回的长度是为项目声明的长度。有时,找到不包括尾随空白的长度更有用。下一个功能就是这样,在过程中使用LEN。

    INTEGER FUNCTION LENGTH(STRING) !Returns length of string ignoring trailing blanks 
    CHARACTER*(*) STRING 
    DO 15, I = LEN(STRING), 1, -1 
      IF(STRING(I:I) .NE. ' ') GO TO 20 
15  CONTINUE 
20  LENGTH = I 
    END 
© www.soinside.com 2019 - 2024. All rights reserved.