2013-07-22 3 views
1

내 코드에서 잘못 된 부분을 디버깅하려고합니다. 내 file.txt은 1763 행을 포함하지만 실행하면 항상 완료되지 않습니다. 항상 1680 이상에서 멈 춥니 다 (내 코드에서 row로 인쇄). 문제는 내 텍스트 파일로 문제가 있다고 생각하지 않기 때문에 실행할 때마다 다른 행에서 멈추는 것입니다.완료되지 않은 파일 읽기

row = 0 
for line in io.lines("file.txt") do 
    row = row+1 
    local new_row1 = {} 
    for n in line:gmatch'%S+' do 
    table.insert(new_row1, tonumber(n)) 
    end 
    if #new_row1 > 0 then 
    table.insert(input, new_row1) 
    end 
    print(row) 
end 

내 코드에 이상이 있습니까?

+0

프로그램이 오류없이 종료됩니까? –

+0

@EgorSkriptunoff 그래. 오류 없음. – Rachelle

+0

코드 끝 부분에 다음 줄을 추가하십시오 :'print ('Done', row, #input)'. 매번 다른 수를 인쇄합니까? –

답변

2

코드에서와 같이 스크립트 시작 부분에 "file.txt"에 대한 파일 핸들을 열었습니다. 은 파일을 닫을 때까지으로 끝납니다. 그 시간 동안, 당신은 당신이보고있는 이상한 행동을 일으키는 루프에서 "file.txt"를 다시 열려고 시도합니다.

Done 1762 1762 
-------------------------- 
:

file = assert(io.open("file.txt", "w")) 
    for i = 1, 1000 do 
     j = math.random(i, row-one) 
     u[i], u[j] = u[j], u[i] 
     for k = 1, 11 do 
     file:write(input2[u[i]][k], " ") 
     end 
     file:write"\n" 
    end 
    num = (row-one)+1 
    for i = 1, one do 
    for k=1, 11 do 
     file:write(input2[num][k], " ") --writes to the file all the rows starting from where '1' in column11 was seen 
    end 
    file:write("\n") 
    num = num + 1 
    end 
file:close() 
-----------------------------------Access file.txt.-------------------------- 
-- ... 

이것은 예상되는 출력을 제공 : 나는 문제를 해결 첫 번째 루프 이후하지만 마지막 외부 루프 전에 중간 섹션에 파일 개폐 범위를 이동

관련 문제