濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > Lua編程示例(五): C語(yǔ)言對(duì)Lua表的讀取和添加

Lua編程示例(五): C語(yǔ)言對(duì)Lua表的讀取和添加

熱門(mén)標(biāo)簽:昆明電話(huà)外呼系統(tǒng)好么 海口智能語(yǔ)音電銷(xiāo)機(jī)器人好用嗎 電話(huà)機(jī)器人每天搜索多少次 艾比利外呼系統(tǒng) 杞縣地圖標(biāo)注app 陜西便宜電銷(xiāo)機(jī)器人軟件 免費(fèi)門(mén)店地圖標(biāo)注注冊(cè)入駐 衡水外呼線(xiàn)路解決 外呼系統(tǒng)一天耗費(fèi)多少流量
#include "stdafx.h"

lua_State *L;


void load_lua(char *filename){
 L=luaL_newstate();
 luaL_openlibs(L);
 if((luaL_loadfile(L,filename) || lua_pcall(L,0,0,0))!= 0){
 luaL_error(L,"loadfile error! \n %s",lua_tostring(L,-1));
 }
}

double getfield(lua_State *L,char * key){
 double res;
 //默認(rèn)棧頂是table,將key入棧
 lua_pushstring(L,key);
 lua_gettable(L,-2);  //查找鍵值為key的元素,置于棧頂
 if(!lua_isnumber(L,-1)){
 luaL_error(L,"num get error! %s\n",lua_tostring(L,-1));
 }
 res = lua_tonumber(L,-1);
 lua_pop(L,1); //刪掉產(chǎn)生的查找結(jié)果
 return res;
}
void setfield(lua_State *L,char *key,double value){
 //默認(rèn)棧頂是table
 lua_pushstring(L,key);
 lua_pushnumber(L,value);
 lua_settable(L,-3); //將這一對(duì)鍵值設(shè)成元素
}

struct mycolor{
 char *name;
 unsigned char red,green,blue;
}Color[]={
 {"WIETH",1,1,1},
 {"BLACK",0,0,0},
 {"BLUE",0,0,1}
};
//先創(chuàng)建一個(gè)空的棧,填入元素,用lua_setglobal彈出表,并賦成全局變量
void setcolor(lua_State *L,struct mycolor col){
 lua_newtable(L);
 setfield(L,"r",col.red);
 setfield(L,"g",col.green);
 setfield(L,"b",col.blue);
 lua_setglobal(L,col.name);
}

void getcolor(lua_State *L,char *key){
 lua_getglobal(L,key);
 if(!lua_istable(L,-1)){
 luaL_error(L,"'background' is not a table! %s\n",lua_tostring(L,-1));
 }
 double red;
 double green;
 double blue; 
 red = getfield(L,"r");
 blue = getfield(L,"b");
 green = getfield(L,"g");
 printf("The %s color : red = %.2f ,green = %.2f ,blue = %.2f\n",key,red,green,blue);
}

int _tmain(int argc, _TCHAR* argv[])
{
 load_lua("test.lua");
 getcolor(L,"background");
 int i = 0;
 while(Color[i].name != NULL){
 setcolor(L,Color[i]);
 i++;
 }
 getcolor(L,"WIETH");
 getcolor(L,"BLUE");
 return 0;
}

test.lua 中就一行代碼:

復(fù)制代碼 代碼如下:

background = {r=1,g=0.5,b=0.7} 

運(yùn)行輸出結(jié)果為:

The background color : red = 1.00 ,green = 0.50 ,blue = 0.70
The WIETH color : red = 1.00 ,green = 1.00 ,blue = 1.00
The BLUE color : red = 0.00 ,green = 0.00 ,blue = 1.00

您可能感興趣的文章:
  • C語(yǔ)言與Lua之間的相互調(diào)用詳解
  • C++利用LuaIntf調(diào)用Lua的方法示例
  • 簡(jiǎn)單談?wù)刲ua和c的交互
  • Lua調(diào)用自定義C模塊
  • Lua編程示例(六): C語(yǔ)言調(diào)用Lua函數(shù)
  • Lua編程示例(一):select、debug、可變參數(shù)、table操作、error
  • Lua中調(diào)用C++函數(shù)示例
  • C++中調(diào)用Lua配置文件和響應(yīng)函數(shù)示例
  • 使用Lua來(lái)擴(kuò)展C++程序的方法
  • Lua和C/C++互相調(diào)用實(shí)例分析

標(biāo)簽:昌都 宿遷 南京 西寧 臨滄 ???/a> 泰安 營(yíng)口

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Lua編程示例(五): C語(yǔ)言對(duì)Lua表的讀取和添加》,本文關(guān)鍵詞  Lua,編程,示例,五,語(yǔ)言,對(duì),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Lua編程示例(五): C語(yǔ)言對(duì)Lua表的讀取和添加》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于Lua編程示例(五): C語(yǔ)言對(duì)Lua表的讀取和添加的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    龙里县| 呼图壁县| 通榆县| 巨鹿县| 车险| 石嘴山市| 宁强县| 花垣县| 民权县| 中阳县| 旅游| 资阳市| 曲沃县| 左贡县| 东海县| 屯昌县| 木里| 荥阳市| 黔西县| 洱源县| 泗洪县| 岳池县| 新绛县| 鹰潭市| 平果县| 渝北区| 个旧市| 江门市| 青阳县| 应用必备| 桃园县| 宣汉县| 扎赉特旗| 板桥市| 潮州市| 赤壁市| 大石桥市| 灵武市| 隆化县| 青州市| 孟州市|