字符数组格式

Char Array Formatting

本文关键字:格式 数组 字符      更新时间:2023-10-16

我正在开发一款hangman游戏,其中错误的字母猜测存储在一个名为wrongletters的字符数组中。当然,用户以零个错误字母开始游戏,因此wrongletters数组在声明时保持为空。我遇到的问题是,当我试图显示错误的字母时,由于数组中的所有其他非值元素,字母向右间隔很远

预期:(猜测字母:A B C D)

当前:(猜测字母:(额外空格)A B C D)

有什么想法吗?(我知道游戏还不能正常运行):

void gameSequence()     // Runs the hangman game loop
{
// Local and Global Variable Declaration and Initialization
char guessLetter = ' ';
guessWord = strToUpper(getNextWord());
string maskedWord(guessWord.size(), '_');
char wrongLetters[26] = {};
int numWrongLetters = sizeof(wrongLetters) / sizeof(wrongLetters[0]);
// Input, Process, and Output
cout << "nLet's PLAYnn";
for (int i = 0; i < maskedWord.length(); i++)
    cout << maskedWord[i] << " ";
while (incorrectCount < 6)
{
    drawHangman(incorrectCount);
    cout << "<<<<<<<<<< MAKE A GUESS >>>>>>>>>>nn";
    cout << "Guessed Letters: ";
    for (int i = 0; i < 26; i++)
        cout << wrongLetters[i] << " ";
    cout << "nnEnter a letter to guess: ";
    cin >> guessLetter;
    cout << endl;
    guessLetter = toupper(guessLetter);
    for (int i = 0; i < maskedWord.length(); i++)
        cout << maskedWord[i] << " ";
    if (guessWord.find(guessLetter) != string::npos)
    {
        for (int i = 0; i < maskedWord.length(); i++)
        {
            if (maskedWord[i] == guessLetter)
                maskedWord[i] = guessLetter;
        }
    }
    else
    {
        incorrectCount++;
        wrongLetters[incorrectCount] = guessLetter;
        bubbleSort(wrongLetters, numWrongLetters);
    }
        if (incorrectCount == 6)
        {
            drawHangman(incorrectCount);
            cout << "Sorry you lose - the word was: " << guessWord << endl << endl;
        }
}
incorrectCount = 0;
}

据我所知,数组wrongletters的开头包含迄今为止猜测的错误字母。因此,打印所有内容是没有意义的,尤其是对所有内容进行排序

因此,您应该更改:

for (int i = 0; i < incorrectCount; i++) // incorrectCount replaced 26
    cout << wrongLetters[i] << " ";
...
else
{
    incorrectCount++;
    wrongLetters[incorrectCount] = guessLetter;
    bubbleSort(wrongLetters, incorrectCount+1); // incorrectCount replaced numWrongLetters
}

否则,当对所有数组进行排序时,空格会先出现在错误的字母之前。

因为即使您的char序列为空,您也会在循环中要求在错误的Letters[i]后面显示一个空格。将"替换为endl,您将拥有
A
B
C
D