0

所以我把这个文件命名为“test.txt”,这个文件的内容如下:

一次

两次

我要做的是读取这个文件,逐行获取它的内容并将其附加到一个名为“myarray”的数组中,如下所示。目前我能够读取文件,计算文件中有多少行,但是 cannon 弄清楚如何将每一行附加到我的数组中它自己的索引中。

这是到目前为止的代码:

String filename = "C:\test.txt"    
Stream input = read filename
string str
int Number
int star = 0
while (true)
{
int NUMBER
input >> str
     if (end of input) break
     star++
}
NUMBER = star
string myarray[NUMBER] = {str}
print myarray[]`

理论上,我想 myarray[NUMBER] = {"once","twice"}

非常感谢任何建议。谢谢!

4

2 回答 2

1

有两种方法可以做到这一点:

第一种方法是循环文件两次。第一次只是为了计算有多少行,然后用那么多行创建你的数组。然后,您将再次循环以将每一行实际添加到数组插槽之一。

例子:

String filename = "C:\test.txt"    
Stream input = read filename
string str
int star = 0

while (true)
{
    input >> str
    if(end of input) break
    star++
}

string strArray[star]
input = read filename    
star = 0

while (true)
{
    input >> str
    if(end of input) break
    strArray[star] = str
    star++
}

// Do your code with the array here

第二种方法,也是更简单的方法,是使用跳过列表而不是数组。

例子:

String filename = "C:\test.txt"    
Stream input = read filename
string str
int star = 0
Skip fileLines = create

while (true)
{
    input >> str
    if(end of input) break
    put(fileLines, star, str)
    star++
}

for str in fileLines do
{
    print str "\n"
}
delete fileLines

不要忘记最后一行是删除跳过列表并释放资源。

于 2013-08-14T15:53:44.340 回答
0

详细说明史蒂夫的回答和您对使用数组的要求,以下也是可能的:

string filename = "C:\\test.txt"    
Stream input = read filename
string str
int star = 0
Array fileLines = create(1,1)

while (true)
{
    input >> str
    if(end of input) break
    star++
    put(fileLines, str, star, 0)
}
put(fileLines, star, 0, 0)

int index, count = get(fileLines, 0, 0) // get the number of lines
for (index=1; index<=count; index++) 
{
    print (string get(fileLines, index, 0)) "\n"
}
delete fileLines

这使用了一个 Array 对象,其中行数存储在第一个位置。Array 的另一个“维度”可用于存储每行的信息(例如,计算单词的数量等)。

同样,完成后不要忘记删除 Array 对象。

于 2013-09-02T13:58:23.840 回答