字符串打印额外值C编程
String printing extra values C programming
我目前正在 class 开发一款游戏,但在打印和检查字符串时遇到了一些问题。本质上它是 hang man,我需要将单词打印为 _
(下划线),并用空格分隔每个下划线。我只是填写一个框架代码,我必须填写的代码如下所示:
initializeBlankString(const int numLetter, char revealedLetters[25])
{
int i;
for(i=0;i < numLetter; i++){
revealedLetters[i] = '_';
}
revealedLetters[numLetter - 1] = '[=10=]';
}
printWithSpaces(char revealedLetters[25])
{
int i;
for(i=0;i<(strlen(revealedLetters));i++){
printf("%c ", revealedLetters[i]);
}
}
revealGuessedLetter(char word[], char revealedLetters[25], char guess)
{
int i, n = 0;
for(i=0;i<strlen(word);i++){
if (word[i] == guess){
revealedLetters[i] = guess;
n = 1;
}
}
return n;
}
checkGuess(char word[25], char revealedLetters[25])
{
if(word == revealedLetters)
return 1;
else
return 0;
}
我尝试了很多不同的东西,但我无法成功。
问题是当这个词类似于 unix 时,它会显示 _ _ _ _ + r 6 _
而不是 _ _ _ _
我以为我逃脱了,但它看起来不像。
函数调用如下所示:
initializeBlankString(strlen(word), revealedLetters);
printWithSpaces(revealedLetters);
charRevealed = revealGuessedLetter(word, revealedLetters, guess);
won = checkGuess(word, revealedLetters);
解决方案:
void initializeBlankString(const int numLetter, char revealedLetters[25])
{
int i;
for(i=0;i < numLetter; i++){
revealedLetters[i] = '_';
}
revealedLetters[numLetter] = '[=12=]';
}
void printWithSpaces(char revealedLetters[25])
{
int i;
for(i=0;i<(strlen(revealedLetters));i++){
printf("%c ", revealedLetters[i]);
}
}
int revealGuessedLetter(char word[], char revealedLetters[25], char guess)
{
int i, n = 0;
for(i=0;i<strlen(word);i++){
if (word[i] == guess){
revealedLetters[i] = guess;
n = 1;
}
}
return n;
}
int checkGuess(char word[25], char revealedLetters[25])
{
for(int i = 0; i < strlen(word);i++){
if(word[i] != revealedLetters[i])
return 0;
}
return 1;
}
最终 '[=12=]'
的位置在 initializeBlankString
中计算错误:
revealedLetters[numLetter - 1] = '[=10=]';
应该是:
revealedLetters[numLetter] = '[=11=]';
您的代码还有很多问题:
现代 C 要求函数 return 类型。前 2 个 void
,后 2 个 int
。
您不能将字符数组与 if(word == revealedLetters)
进行比较
我目前正在 class 开发一款游戏,但在打印和检查字符串时遇到了一些问题。本质上它是 hang man,我需要将单词打印为 _
(下划线),并用空格分隔每个下划线。我只是填写一个框架代码,我必须填写的代码如下所示:
initializeBlankString(const int numLetter, char revealedLetters[25])
{
int i;
for(i=0;i < numLetter; i++){
revealedLetters[i] = '_';
}
revealedLetters[numLetter - 1] = '[=10=]';
}
printWithSpaces(char revealedLetters[25])
{
int i;
for(i=0;i<(strlen(revealedLetters));i++){
printf("%c ", revealedLetters[i]);
}
}
revealGuessedLetter(char word[], char revealedLetters[25], char guess)
{
int i, n = 0;
for(i=0;i<strlen(word);i++){
if (word[i] == guess){
revealedLetters[i] = guess;
n = 1;
}
}
return n;
}
checkGuess(char word[25], char revealedLetters[25])
{
if(word == revealedLetters)
return 1;
else
return 0;
}
我尝试了很多不同的东西,但我无法成功。
问题是当这个词类似于 unix 时,它会显示 _ _ _ _ + r 6 _
而不是 _ _ _ _
我以为我逃脱了,但它看起来不像。
函数调用如下所示:
initializeBlankString(strlen(word), revealedLetters);
printWithSpaces(revealedLetters);
charRevealed = revealGuessedLetter(word, revealedLetters, guess);
won = checkGuess(word, revealedLetters);
解决方案:
void initializeBlankString(const int numLetter, char revealedLetters[25])
{
int i;
for(i=0;i < numLetter; i++){
revealedLetters[i] = '_';
}
revealedLetters[numLetter] = '[=12=]';
}
void printWithSpaces(char revealedLetters[25])
{
int i;
for(i=0;i<(strlen(revealedLetters));i++){
printf("%c ", revealedLetters[i]);
}
}
int revealGuessedLetter(char word[], char revealedLetters[25], char guess)
{
int i, n = 0;
for(i=0;i<strlen(word);i++){
if (word[i] == guess){
revealedLetters[i] = guess;
n = 1;
}
}
return n;
}
int checkGuess(char word[25], char revealedLetters[25])
{
for(int i = 0; i < strlen(word);i++){
if(word[i] != revealedLetters[i])
return 0;
}
return 1;
}
最终 '[=12=]'
的位置在 initializeBlankString
中计算错误:
revealedLetters[numLetter - 1] = '[=10=]';
应该是:
revealedLetters[numLetter] = '[=11=]';
您的代码还有很多问题:
现代 C 要求函数 return 类型。前 2 个
void
,后 2 个int
。您不能将字符数组与
if(word == revealedLetters)
进行比较