输出中的奇数字符

时间:2014-02-07 09:50:21

标签: c++

我正在尝试用c ++编写一个简单的刽子手游戏,方法是从列表中随机选择一个单词,检查字符串长度,然后将多个* s写入一个新的字符串,作为尚未猜到的单词中的占位符。最大长度为9个字母。我的游戏几乎完美无缺 - 问题是每当我的单词有8或9个字母时,程序会打印正确的* s数,后跟一个或两个 字符。研究告诉我这些是不可打印的角色,但我已经尝试了一段时间了,我不知道他们为什么会在这里,为什么他们只出现一个字长> 7,或者如何摆脱它们。以下是相关代码。有什么建议吗?

生成* s:

char word[80];
int len=strlen(targetWord);
for(int i=0;i<len;i++){
    word[i]='*';
}

2 个答案:

答案 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+='*';
}