gpt4 book ai didi

C 用户输入不起作用(c、lua)

转载 作者:行者123 更新时间:2023-11-30 15:31:26 37 4
gpt4 key购买 nike

我正在尝试用 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

最佳答案

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

..等等

关于C 用户输入不起作用(c、lua),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24817073/

37 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com