嗨,我正在用 C 語言制作一個簡單的劊子手游戲
我有一個等待用戶輸入字符的 while 回圈。但是,它在第?? 2 次迭代時跳過了傳遞。
void startGuessing(char *word){
char dummyWord[13];
strcpy(dummyWord, word);
int dummyWordLength = strlen(dummyWord);
for (size_t i = 0; i < dummyWordLength; i )
{
dummyWord[i] = '_';
}
int remaindingChances = 7;
while(remaindingChances > 0){
printf("Player 2 has so far guessed: %s\n", dummyWord);
printf("Player 2, you have %d guesses remaining. Enter your next guess:\n", remaindingChances);
char guess;
guess = getchar();
int wordLength = strlen(word);
for (size_t i = 0; i < wordLength; i )
{
if(guess == word[i]){
dummyWord[i] = word[i];
}
}
remaindingChances--;
}
}
以下是我看到的輸出:
Player 2 has so far guessed: ___
Player 2, you have 7 guesses remaining. Enter your next guess:
c
Player 2 has so far guessed: c__
Player 2, you have 6 guesses remaining. Enter your next guess:
Player 2 has so far guessed: c__
Player 2, you have 5 guesses remaining. Enter your next guess:
難道我做錯了什么?哦,我似乎無法弄清楚這個問題。
uj5u.com熱心網友回復:
最簡單的解決方法可能是通過將 替換為以下內容來消耗空格guess = getchar():
int guess;
while( isspace(guess = getchar()) ) { ; }
(注意getchar回傳一個int,你應該養成將變數宣告為一個的習慣int。)
如果你想允許包含空格的單詞,你可以使用while( (guess = getchar()) != '\n' )或類似的。無論您想使用什么邏輯,您都需要處理所有資料,包括換行符。(并注意輸入的可能性\r\n)
uj5u.com熱心網友回復:
考慮使用
scanf(" %c", &guess);
供您輸入。您可以實作進一步的邏輯以確保輸入是字母,但這應該可以解決您當前的問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/524592.html
標籤:C
