跳转到内容

编程基础/从文本文件加载数组

来自维基教科书,开放书籍,开放世界

从文本文件加载数组需要几个步骤,包括:打开文件、读取记录、解析(分割)记录到字段、将字段添加到数组以及关闭文件。可以一次读取整个文件,然后解析或逐行处理。数组必须与文件中记录的数量一样大,或者必须动态生成。

从文件加载数组呈现了一个有趣的困境。问题围绕着你应该在数组中规划多少个元素。假设是 100,但是如果文件少于或多于 100 个值怎么办?程序如何正确处理?

或者

  1. 读取文件并计算记录数量。
  2. 创建一个指定大小的静态数组。
  3. 再次读取文件并将每个记录添加到数组。

或者

  1. 读取文件并将记录动态添加到数组。

处理记录

[编辑 | 编辑源代码]

有两种文件处理选项

  1. 将整个文件读入内存,分割记录,然后处理每个记录。
  2. 逐行读取文件并一次处理一条记录。

哪种方法更好将取决于文件的大小以及你的编程语言支持的文件和字符串处理类型。对于小文件,一次读取整个文件可能更快。非常大的文件必须逐行处理。

处理字段

[编辑 | 编辑源代码]

处理字段需要根据给定的文件格式分割记录。例如,逗号分隔值文件可能格式化为

Celsius, Fahrenheit
0.0,32.0
1.0,33.8
2.0,35.6

第一行包含用逗号分隔的字段名。接下来的几行包含每个字段的值,并用逗号分隔。请注意,所有文本文件输入都是字符串。每行必须以字段分隔符(逗号)分割,然后数字字段必须转换为整数或浮点数以进行处理。

伪代码

[编辑 | 编辑源代码]

静态数组处理

[编辑 | 编辑源代码]
Open file
Read header
While Not End-Of-File
    Read line
    Increment record count
Close file

Declare array with length based on record count
Read Header
While Not End-Of-File
    Read line
    Split line into field(s)
    Convert numeric values to numeric data types
    Add field(s) to array or parallel arrays
Close file

动态数组处理

[编辑 | 编辑源代码]
Declare empty array
Open file
Read Header
While Not End-Of-File
    Read line
    Split line into field(s)
    Convert numeric values to numeric data types
    Add field(s) to array or parallel arrays
Close file

关键词

[编辑 | 编辑源代码]
动态内存
与本地范围关联的堆栈创建内存。
解析
分割
静态内存
与全局范围关联的数据区内存。

参考文献

[编辑 | 编辑源代码]
华夏公益教科书