第一个函数将适当地改变所选择的通用变量,但第二个函数根本不会影响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;
答案 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