Lua 卢阿吉特;FFI:如何正确使用char*?
我已经在以下位置查看了LuaJIT教程: 我正在尝试更多地了解Lua,想看看在“libutility.so”中调用简单的“小写”函数对我来说有多容易 下面是我想调用的C函数:Lua 卢阿吉特;FFI:如何正确使用char*?,lua,Lua,我已经在以下位置查看了LuaJIT教程: 我正在尝试更多地了解Lua,想看看在“libutility.so”中调用简单的“小写”函数对我来说有多容易 下面是我想调用的C函数: void lowercase(char* str){ int z; for (z = 0; str[z]; z++){ str[z] = tolower(str[ z ]); } } 现在我想从Lua调用这个函数……这是我使用LuaJIT的FFI
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)
上面的代码不起作用……我认为它在上面的最后一行代码之前是有效的
有人能告诉我如何调用这个“小写”函数并正确打印结果吗?我一点也不确定str是什么,但是
tolower
返回它的值,所以你真的想打印buf试试这个:
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))