如果不是硬编码字符串,setTitle() 函数会使我的程序崩溃

setTitle() function is making crash my program if not hardcoded String

从现在开始,我就在为我的大学迷宫游戏编程。我差不多准备好了。只是需要美化一下。

在这里我想'回合制作一个setTitle函数。每当测试它时,它都会出现一些我从未见过的奇怪症状。

因此,如果我对 title[255] 数组进行硬编码,标题将附加到 cmd 数组中。当将标题设置为函数中的参数时,我将值传递给 setTitle(char title[255])(例如“* MAZE RUNNER*”),程序崩溃。

我试过不同的数组大小,但这种症状似乎是随机出现的。

也许是我这边的初学者错误?

void setTitle(char title[255]) {
    char cmd[] = "title ";
    strcat(cmd, title);
    system(cmd);
}

int main() {
    setTitle("Hello Whosebug! I hope you can help me! feelssadman:(");
    return 0;
}

你的函数问题很简单;为数组 cmd 分配的大小由编译器使用初始化字符串的长度自动完成。要使您的函数正常工作,只需在声明 cmd 字符串时在 [] 之间放置一些常量。

void setTitle(char title[]) {
    char cmd[255] = "title ";
    strcat(cmd, title);
    system(cmd);
}

另请记住,声明函数参数时不需要 255。 Is 被编译器忽略。您也可以将其替换为 void setTitle(const char* title)(实际上 title 实际上是什么),但是当您需要一个数组时,将其声明为 title[] 更为常见和常规。