gpt4 book ai didi

c - 返回单个字符的数组

转载 作者:行者123 更新时间:2023-11-30 16:20:33 25 4
gpt4 key购买 nike

我目前正在开展一个大学项目,我正在用 c 语言制作一款游戏。我正在尝试选择基于按钮的菜单,并且需要能够将文本放入几个不同的菜单中。我正在尝试使用基于 switch case 的函数来返回按钮的文本。

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

抱歉问了这么长的问题。感谢您的提前帮助。

最佳答案

我假设基于代码的 C 语言。

您不能将堆栈分配的数组作为指针返回。

 char *rtnTxt[] = { NULL }; //Don't do this

您应该 malloc 一个数组,然后使用 strncpy

#define MAX_STRING 256 // modify this to what ever your max string will be
char *rtnTxt = malloc(sizeof(char)*MAX_STRING);

然后在你的开关中你可以strcpy

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;
}

最后不要忘记在完成后调用free,否则会出现内存泄漏:)

关于c - 返回单个字符的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55251313/

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