LuaJIT & FFI:如何正确使用char*?

  • 本文关键字:char 何正确 FFI LuaJIT lua
  • 更新时间 :
  • 英文 :


我看过LuaJIT教程:http://luajit.org/ext_ffi_tutorial.html

我正试图深入了解Lua,并想看看在"libutility"中调用一个简单的"小写"函数有多容易

这是我想调用的C函数:

void lowercase(char* str){    
    int z;    
    for (z = 0; str[z]; z++){    
      str[z] = tolower(str[ z ]);    
    }    
}

现在我想从Lua调用这个函数。。。这是我使用LuaJIT的FFI 的代码

local ffi = require("ffi")
ffi.cdef[[
void lowercase(char* str);
]]
local utility = ffi.load("utility")    
local buf = ffi.new("char[?]", 11)
ffi.copy(buf, "HELLO WORLD")    
utility.lowercase(buf)
print("Result: ", #str)

以上代码不起作用。。。好吧,我认为它一直工作到上面的最后一行代码。

有人能给我一些建议,告诉我如何调用这个"小写"函数并正确打印出结果吗?

试试这个:

local ffi = require("ffi")
ffi.cdef[[
void lowercase(char* str);
]]
local utility = ffi.load("utility")    
local buf = ffi.new("char[?]", "HELLO WORLD")
utility.lowercase(buf)
print("Result: ", ffi.string(buf))

我根本不确定str是什么,但tolower会返回它的值,所以您真的想打印buf

相关内容

  • 没有找到相关文章

最新更新