如何在标准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中修剪字符数组?的主要内容,如果未能解决你的问题,请参考以下文章

如何修剪数组中的所有字符串? [复制]

如何以标准方式修剪前导/尾随空格?

字节数组中的字符串不会在 C# 中被修剪?

编写假定大小的数组导致“上限不得省略...”

无法使用Javascript或JQuery修剪对象属性

Java:如何“修剪”字节数组?