用户输入无法工作(C,Lua)

我正在尝试用C和Lua创建一个简单的计算器应用程序。但出于某种原因,它会根据输入跳过命令。我知道这段代码是无用和不切实际的,但我正在学习使用Lua(LuaJIT)、c api,所以请谅解我。当我运行这段代码时,它会获取用户输入(即添加),但然后什么也不做,跳过到代码的末尾。但我将其放入一个无限循环中以防止这种情况发生,但它仍然跳过if语句中的代码。有任何想法如何修复这个问题吗?任何帮助都将不胜感激。谢谢!

C代码:

int main()

{
fflush(stdin);
int status;
int trace = 1;
int x = 0;
lua_Number lua_tonumber (lua_State *L, int index);
lua_State *L = luaL_newstate();
luaL_openlibs(L);
luaJIT_setmode(L, trace,LUAJIT_MODE_ALLFUNC|LUAJIT_MODE_ON);
luaL_dofile(L,"fuel.lua");

while(x == 0){
printf("Enter a op (add, sub, multi, div)\n");
scanf("%s", a_word);

if(a_word == "add"){
lua_Number num1;
lua_Number num2;
printf("Enter the first number: ");
scanf("%s", num1);
printf("Enter the second number: ");
scanf("%s", num2);
lua_getglobal(L, "add");
lua_pushnumber(L, num1);
lua_pushnumber(L, num2);
lua_pcall(L,2,1,0);
int resut = lua_tonumber(L,-1);
printf("the number is %d\n", resut);
}

else if(a_word == "sub"){
lua_Number num1;
lua_Number num2;
printf("Enter the first number: ");
scanf("%d", num1);
printf("Enter the second number: ");
scanf("%d", num2);
lua_getglobal(L, "sub");
lua_pushnumber(L, num1);
lua_pushnumber(L, num2);
lua_pcall(L,2,1,0);
int resut = lua_tonumber(L,-1);
printf("the number is %d\n", resut);
}

else if(a_word == "multi"){
lua_Number num1;
lua_Number num2;
printf("Enter the first number: ");
scanf("%s", num1);
printf("Enter the second number: ");
scanf("%s", num2);
lua_getglobal(L, "mult");
lua_pushnumber(L, num1);
lua_pushnumber(L, num2);
lua_pcall(L,2,1,0);
int resut = lua_tonumber(L,-1);
printf("the number is %d\n", resut);
}

else if(a_word == "div"){
lua_Number num1;
lua_Number num2;
printf("Enter the first number: ");
scanf("%s", num1);
printf("Enter the second number: ");
scanf("%s", num2);
lua_getglobal(L, "divi");
lua_pushnumber(L, num1);
lua_pushnumber(L, num2);
lua_pcall(L,2,1,0);
int resut = lua_tonumber(L,-1);
printf("the number is %d\n", resut);
}
}
}

Lua文件:

add = function(x,y)
return x+y
end

sub = function(x,y)
return x-y
end

mult = function(x,y)
return x*y
end

divi = function(x,y)
return x / y
end
点赞
用户2040431
用户2040431

在c中,可以使用strcmp比较 '字符串'。

strcmp(first_char*,scnd_char*)

如果相等,它返回0,如果第一个在字典排序中更大或更小,则返回正或负值。

更多阅读材料: http://en.cppreference.com/w/c/string/byte/strcmp

它适用于c++,也适用于这里。

我相信你需要做的是将:

if(a_word == "add")

替换为:

if(strcmp(a_word, "add) == 0)

...等

2014-07-18 04:28:56