如何翻译文件int 2-D数组?

时间:2017-01-31 13:13:41

标签: arrays smallbasic

我有一个由数字组成的文件array.txt。我需要从中制作一个2D数组。我怎么能这样做?

0 6 10 0 0 0 0 0 0 0
6 0 12 11 14 0 0 0 0 0
10 12 0 12 0 0 8 16 0 0
0 11 12 0 0 6 3 0 0 0
0 14 0 0 0 4 0 0 6 0
0 0 0 6 4 0 0 0 12 0
0 0 8 3 0 0 0 0 16 6
0 0 16 0 0 0 0 0 0 8
0 0 0 0 6 12 16 0 0 13
0 0 0 0 0 0 6 8 13 0

2 个答案:

答案 0 :(得分:0)

必须有2个变量...读取文件直到读取新行,将每个数字放入 arr [column] [row] 并在列中添加1,当读取新行时,将1添加到行并再次读取新行中的数字。

答案 1 :(得分:0)

+ combo_ci是正确的。您需要读取文件,查找增加列的空格和新行组合CR-LF以增加行。这是我编写的一个修改过的示例,用于读取Excel CSV文件。唯一的区别是我用空格

替换了逗号分隔符
'Reading a space deliminted file
    TextWindow.Show()

    LoadFile()
    TextWindow.WriteLine("File Size = " + Text.GetLength(DataIn))
    ParseFile()
    TextWindow.WriteLine("Rows = " + rows + ",  Columns = " + cols)
    DisplayTable()

    '---------------------------------------------------------------

    'Read the contents of the CSV style (spaces instead of commas) file into memory
    Sub LoadFile
      filename = Program.Directory
      filename = filename + "\excelintoSB.csv"

      DataIn = File.ReadContents(filename)
    EndSub

    'Parse the file contents, looking for spaces and line breaks to separate the cells. 
    Sub ParseFile
      row = 1
      col = 1
      cell = ""

      For i =1 To Text.GetLength(DataIn)  'Look at each character in the file
        ch = Text.GetSubText(DataIn,i,1)
        'Is it a space or a cariage return? Store the Cell
        If ch = " " or text.GetCharacterCode(ch) = 13 then
          table[row][col] = cell
          cell = ""
          If text.GetCharacterCode(ch) = 13 Then 'end of row, start a new one
            row = row + 1
            col = 1
          Else 'New Cell, current row
            col = col + 1
            If col > maxCol then 'Keep track of how many columns we have encountered
              maxCol = col
            endif
          endif
        ElseIf text.GetCharacterCode(ch) <> 10 then 'build the cell, ignoring line feeds.
          cell = cell + ch
        EndIf
      EndFor
      rows = row - 1
      cols = maxCol
    EndSub

    'Display the table in row / column format
    Sub DisplayTable
      TextWindow.WriteLine("The Table --- ")
      For i = 1 To rows
        TextWindow.Write("[ ")
        For j = 1 To cols
          TextWindow.Write(table[i][j] + " ")
        EndFor
        TextWindow.WriteLine("]")
      EndFor
    EndSub