如果不是硬编码字符串,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[]
更为常见和常规。
从现在开始,我就在为我的大学迷宫游戏编程。我差不多准备好了。只是需要美化一下。
在这里我想'回合制作一个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[]
更为常见和常规。