0
我試圖打印存儲在固定數組中的以空字符結尾的字符串的內容。該數組在開始時memset'd爲零,然後填充以空字符結尾的字符串。我正在嘗試打印字符串。如何在LuaJIT中打印固定數組的字符?
這工作:
ffi.cdef[[
typedef struct _t
{
uint16_t i;
const char * name;
} MyStruct;
]]
ffi.cdef[[
MyStruct* Get();
]]
local myDll = ffi.load("myDll")
local x = myDll.Get()
print("Name: %s", x.name)
這將導致一個錯誤:
ffi.cdef[[
typedef struct _t
{
uint16_t i;
char name[25];
} MyStruct;
]]
ffi.cdef[[
MyStruct* Get();
]]
local myDll = ffi.load("myDll")
local x = myDll.Get()
print("Name: %s", x.name)
第二產生這個錯誤:
27: bad argument #2 to 'print' (cannot convert 'char [25]' to 'char (&)[25]')
注:代碼由原來的編輯爲此發佈沒有編譯它。我看起來我不正確地處理數組。什麼是正確的方法來做到這一點?
此外,我建議對與工作方式不同的功能替換內置函數;它會讓你的代碼對其他程序員感到困惑。這個答案假設你正在使用內置的'print'功能。 – 2014-11-05 13:12:01
然後一個相關的問題。您如何建議將所有打印件分流到日誌文件? – 010110110101 2014-11-05 13:15:57
重定向stdout或使用日誌記錄庫。但是,如果你必須重寫print,那麼至少應該使用相同的參數; 'print'不採用格式字符串,而是用分隔它們的選項卡寫入每個參數。 – 2014-11-05 13:18:29