我正在尝试用c ++编写一个简单的刽子手游戏,方法是从列表中随机选择一个单词,检查字符串长度,然后将多个* s写入一个新的字符串,作为尚未猜到的单词中的占位符。最大长度为9个字母。我的游戏几乎完美无缺 - 问题是每当我的单词有8或9个字母时,程序会打印正确的* s数,后跟一个或两个 字符。研究告诉我这些是不可打印的角色,但我已经尝试了一段时间了,我不知道他们为什么会在这里,为什么他们只出现一个字长> 7,或者如何摆脱它们。以下是相关代码。有什么建议吗?
生成* s:
char word[80];
int len=strlen(targetWord);
for(int i=0;i<len;i++){
word[i]='*';
}
答案 0 :(得分:2)
您忘记在字符串末尾添加\0
终止符。在for
循环之后,添加:
word[i] = '\0';
或者,最好使用std::string
而不是C字符串。
答案 1 :(得分:2)
请尝试使用std::string
。
std::string word;
int len=strlen(targetWord);
for(int i=0;i<len;i++){
word+='*';
}