返回单个字符数组

时间:2019-03-19 23:15:31

标签: c arrays char

我目前正在一个大学项目中,用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);

很长的问题很抱歉。 感谢您的高级帮助。

1 个答案:

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

最后,别忘了在操作完成后打电话给免费,否则会导致内存泄漏:)