Je travaille actuellement sur un jeu en classe mais j'ai des problèmes lors de l'impression et de la vérification des chaînes. Essentiellement, il est hang man et j'ai besoin d'imprimer le mot comme juste _
(traits de soulignement) avec des espaces séparant chaque trait de soulignement. Je remplissais juste un code squelette et le code que je devais remplir ressemble à:Chaîne d'impression de valeurs supplémentaires C programmation
initializeBlankString(const int numLetter, char revealedLetters[25])
{
int i;
for(i=0;i < numLetter; i++){
revealedLetters[i] = '_';
}
revealedLetters[numLetter - 1] = '\0';
}
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;
}
J'ai essayé beaucoup de choses différentes et je suis incapable de réussir. Les problèmes seraient lorsque le mot est quelque chose comme unix, il va montrer _ _ _ _ + r 6 _
au lieu de seulement _ _ _ _
Je me suis échappé je pensais mais il ne ressemble pas à ça.
Les appels de fonction ressemblent à ceci:
initializeBlankString(strlen(word), revealedLetters);
printWithSpaces(revealedLetters);
charRevealed = revealGuessedLetter(word, revealedLetters, guess);
won = checkGuess(word, revealedLetters);
solution
:
void initializeBlankString(const int numLetter, char revealedLetters[25])
{
int i;
for(i=0;i < numLetter; i++){
revealedLetters[i] = '_';
}
revealedLetters[numLetter] = '\0';
}
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;
}
GDB ou tout autre débogueur est votre meilleur ami ici ... –