我有一个以压缩行存储 (CRS) 格式存储的大型稀疏矩阵。这基本上是三个数组:一个包含值的数组、一个列索引数组和一个包含行指针的最终数组。例如。 http://web.eecs.utk.edu/~dongarra/etemplates/node373.html
我想将此信息写入一个文本 (.txt) 文件,该文件旨在使用 C 读取并放入三个数组中。我目前计划通过将 Value 数组中的所有条目写在用逗号分隔的一长行中来实现这一点。例如。 5.6,10,456,78.2,...等。然后对其他两个数组执行相同的操作。
我的 C 代码将结束读取第一行,将所有值放入标有“Value”的数组中。等等。
问题
这是“正确的”吗?或者是否有将 CRS 数据放入文本文件的标准方法?
最佳答案
据我所知,没有标准格式。您决定一种让您的生活更轻松的格式。
首先,如果您想查看其中一个文本文件,您会立即被排长队打扰。一些文本编辑器可能只是讨厌你。拆分线路没有错。
其次,考虑在文件开头写出每个数组中元素的数量(好吧,我想这三个数组只有两个不同的数组长度)。这将使您可以预先分配数组。如果手头有所有数组长度,则可以选择进行单个内存分配。
最后,考虑写出一些合理的标签名称。某种可以识别您的文件的标题是正确的格式,然后是表示每个数组开头的内容。检测文件问题对您的代码来说是一种理智的事情。它可能只是一个字符,但它是某种东西。
现在...称我为一个邋遢的老程序员,但我可能只会用二进制写很多东西。特别是如果它是 float 据,我不想处理将数字写成文本时的精度损失(或者当你以全精度写入它们时它们可能消耗的空间)。二进制文件易于编写和快速运行。如果您要跨具有不同字节顺序的平台使用它们,则必须小心。
这是我的 2 美分值(value)..希望它对你有用。
关于c - 将压缩行存储写入文本文件的标准格式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12768347/