Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 卢阿吉特;FFI:如何正确使用char*?_Lua - Fatal编程技术网

Lua 卢阿吉特;FFI:如何正确使用char*?

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

我已经在以下位置查看了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的代码

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))