我目前正在一个大学项目中,用c编写游戏。我正在尝试选择基于按钮的菜单,并且需要能够将文本放入几个不同的菜单中。我正在尝试使用基于开关盒的功能来返回按钮的文本。
char * findButtonTxt(int reference) {
char *rtnTxt[] = { NULL };
switch (reference) {
case 1:
rtnTxt[] = { "T", "O", "W", "E", "R", "_", "O", "F", "_", "P", "O", "W", "E", "R", NULL };
return rtnTxt;
break;
default:
return "T", "O", "W", "E", "R", "_", "O", "F", "_", "P", "O", "W", "E", "R", NULL;
}
}
我希望它像这样使用它
txt = findButtonTxt((4 * curMenu) + i + 1);
betterText(20, (getmaxy() - (25 + (50 * i))) - 30, txt);
到目前为止,这是我需要的,我需要它以这种方式返回数组,因为这是我可以使用已有的BGI版本显示文本的唯一方法。
这是当前正在工作的。
char *twrTxt[] = { "T", "O", "W", "E", "R", "_", "O", "F", "_", "P", "O", "W", "E", "R", NULL };
betterText((getmaxx() / 2), 0, twrTxt);
很长的问题很抱歉。 感谢您的高级帮助。
答案 0 :(得分:0)
我假设基于代码的是C。
您不能将堆栈分配的数组作为指针返回。
char *rtnTxt[] = { NULL }; //Don't do this
您应该先分配一个数组,然后使用strncpy
#define MAX_STRING 256 // modify this to what ever your max string will be
char *rtnTxt = malloc(sizeof(char)*MAX_STRING);
然后在您的开关中按下即可
strcpy (rtnTxt ,"What I want to copy");
然后返回结果
return rtnTxt;
这是完整的解决方案
#define MAX_STRING 256
char * findButtonTxt(int reference) {
char *rtnTxt = malloc(sizeof(char)*MAX_STRING);
switch (reference) {
case 1:
strcpy (rtnTxt ,"Tower of power");
break;
}
return rtnTxt;
}
最后,别忘了在操作完成后打电话给免费,否则会导致内存泄漏:)