如何在标准F77中修剪字符数组?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在标准F77中修剪字符数组?相关的知识,希望对你有一定的参考价值。
我正在读取带有文本标题的ASCII数据文件。 (标题包含有关数据运行的信息。)我想添加每个数据文件的一些列,然后将结果写入另一个数据文件,但保留每个文件的标题。问题是,我事先不知道标题行的长度是多少。如果我使用一个长字符变量(例如字符* 400)来确保我得到整个标题行,那么我的新数据文件有很多我不想要的空格。基本上,我想做TRIM(HeaderVariable),但我无法使用TRIM。有什么建议?有没有办法只写一个CrLF?我想到使用一个字符数组* 1,并在读取它时测试每个字符然后编写它,但是......哇,这太复杂了。在标准F77中有更简单的方法吗? [编辑:自我回答感动。起初不能这样做,因为代表太低了。
我得到了答案。张贴在这里帮助他人。下面的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
以上是关于如何在标准F77中修剪字符数组?的主要内容,如果未能解决你的问题,请参考以下文章