2012-11-25 13 views
-1

我測試了寫在一個Lua(5.2.1)腳本第一次一個文件,兩個版本之間交替:Lua的I/O工作,同時調試,但不是在程序正確

版本1

local ofile = io.open("save.txt", "w") 
    ofile:write("Writing to file...") 
    ofile:close() 

2版

io.output("save.txt") 
io.write("Writing to file...") 
io.close() 

在ZeroBrane Studio中調試時,這兩個工作完美,但在劇本,我的程序插入時,該文件不會寫入,和那任何代碼在那之後顯然不會被執行。順便說一下,我在程序中包含了I/O庫。

lua_State *lua = luaL_newstate(); 

static const luaL_Reg lualibs[] = { 
    { "base", luaopen_base }, 
    { "io", luaopen_io }, 
    { "string", luaopen_string }, 
    { "table", luaopen_table }, 
    { NULL, NULL} 
}; 

const luaL_Reg *lib = lualibs; 
for(; lib->func != NULL; lib++) { 
    lib->func(lua); 
    lua_settop(lua, 0); 
} 
+1

這應該不是問題,但只是好奇,嘗試將文件更改爲'c:/test.txt'而不是'test.txt' – 2012-11-25 22:02:08

+0

我試過了。同樣的事情 - 它在調試時工作,但在實際程序中失敗。 – M89

+1

您的程序在執行此代碼時是否檢查錯誤? –

回答

0

我確定這個問題與如何加載Lua庫有關。簡單地將個人負載更改爲:

luaL_openlibs(lua); 

修復了整個問題。但我仍然不明白爲什麼自己調用I/O庫不起作用。

相關問題