1

有人可以解释为什么当我删除该行时 io.write 不起作用

io.write(inshort.."\n")

io.output 没有第二个定义。代码是否过于嵌套并且 io.output 在某些状态下无效?

我知道 doSomething 被正确调用...

function findpos(arg0, arg1,argf)

    io.input(arg0)
    io.output("that.txt")
    posicounter =0
    posibuffer=""
    if not arg0 then return 99 end
    counter = 1
    while true do
        local line = io.read("*line") 
        if line == nil then break end
        for k, searchstring in ipairs(arg1) do
            found = string.find(line, searchstring)           
            if found ~=nil then 
                inshort = string.sub(line, found) 
                io.write(inshort.."\n")
                if(inshort==posibuffer) then
                posicounter=posicounter+1
                elseif posicounter >0 then
                    io.write("before")
                    node = doSomething()
                    io.write("after")
                    posicounter=0
                else 
                    posicounter=0
                    posibuffer=inshort
                end
            end
            argf(timestamp, string.sub(line, 24))       
            counter = counter +1  
        end
  end
4

1 回答 1

2

请注意,您要删除的行是唯一输出\n字符的行。您看到的问题很可能是您环境中的 i/o 系统(操作系统、终端或 shell)将输出延迟到看到\n字符为止。即,输出是行缓冲的。

于 2013-09-24T16:48:20.563 回答