我不明白为什么这两个功能都不起作用

时间:2017-09-08 20:52:31

标签: c++

第一个函数将适当地改变所选择的通用变量,但第二个函数根本不会影响guessedWord。我知道函数只是复制变量的值,但为什么它在第一个而不是第二个工作?而且,我如何使第二个工作?

void lowerCase() //Convert inputted word to lowercase
{
    int x = 0;
    while(chosenWord[x])
    {
        chosenWord[x] = tolower(chosenWord[x]);
        x++;
    }
}
void setupGuessString() //Set guessed word to same length as chosen word and replace each letter with '_'
{
    int x = 0;
    while(chosenWord[x])
    {
        guessedWord[x] = '_';
        x++;
    }
}

在另一个.cpp中定义(用于练习):

std::string chosenWord;
std::string guessedWord;

在.h中声明(再次,用于练习):

extern std::string chosenWord;
extern std::string guessedWord;

2 个答案:

答案 0 :(得分:1)

据我所知,guessedWord是一个空字符串string guessedWord = "";所以要设置它,你需要向guessedWord添加'_'个字符,而不是将它们设置为'_'。所以你的功能将是:

void setupGuessString()
{
    int x = 0;
    while (chosenWord[x]))
    {
        guessedWord += '_';
    }
}

我强烈建议不要使用全局变量,而不是使用return语句,这只是一种更好的做法。所以你的功能将是:

string lowerCase(string chosenWord)
{
int x = 0;
while(chosenWord[x])
{
        chosenWord[x] = tolower(chosenWord[x]);
        x++;
    }
    return chosenWord;
}

string setupGuessString(string chosenWord)
{
    int x = 0;
    string guessedWord = "";
    while (chosenWord[x]))
    {
        guessedWord += '_';
    }
    return guessedWord;
}

希望这有帮助。

答案 1 :(得分:0)

是猜对象类型字符数组吗? 它是全局数组吗?

    #include <stdio.h>
char *chosenWord = "Hello W";
char guessedWord[10];
void setupGuessString() //Set guessed word to same length as chosen word and replace each letter with '_'
{
    int x = 0;
    while(chosenWord[x])
    {
        guessedWord[x] = '_';
        x++;
    }
     guessedWord[x] = '\0';
}
int main()
{
    setupGuessString();
    printf("%s   ;; %s",chosenWord, guessedWord);
    return 0;
}

这是我看到的输出..: 你好W ;; _______&lt; --- this