2017-09-08 5 views
-3

Die erste Funktion wird die universelle Variable selectedWord angemessen ändern, aber die zweite wird gatesword überhaupt nicht beeinflussen. Ich verstehe, dass die Funktionen nur die Werte der Variablen kopieren, aber warum funktioniert es in der ersten, aber nicht in der zweiten? Und wie mache ich die zweite Arbeit?Ich verstehe nicht, warum diese beiden Funktionen nicht beide funktionieren

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++; 
    } 
} 

wie in einem anderen CPP definiert (für die Praxis):

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

als (für die Praxis wieder) in einer .h erklärt:

extern std::string chosenWord; 
extern std::string guessedWord; 
+3

Wie funktioniert es nicht? Erhalten Sie einen Kompilierungsfehler? Stürzt Ihre Anwendung ab? Erhalten Sie ein anderes Ergebnis als erwartet? Wenn ja, was ist dieser Unterschied? –

+1

Zeige mehr Snippets, wo sind beide Arrays definiert und wie? –

+1

Wahrscheinlich meintest du 'while (gatedWord [x])' btw, nicht 'selectedWord' in der zweiten Funktion, was dazu führt, dass dein' while' nie eingegeben wird. –

Antwort

0

Wie ich verstehe guessedWord ist eine leere Zeichenfolge string guessedWord = "";, so dass Sie '_' Zeichen zu erratenWord hinzufügen müssen, nicht gleich '_' setzen. So wird Ihre Funktion sein:

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

Und ich würde empfehlen, nicht globale Variablen zu verwenden, anstatt sie die return-Anweisung verwenden, das ist nur eine bessere Praxis. So werden Ihre Funktionen sein:

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; 
} 

Hoffe das hilft.

+0

perfekt, danke! – omegacoo

+0

Wie bei den globalen Variablen, ich bin Tracking, ich muss nur den Code arbeiten und dann werde ich daran arbeiten, diese loszuwerden. Ich bin sehr neu und versuche alles zu verstehen. – omegacoo

+0

Wenn er erratenWord zurückgibt, wie würde diese Rückkehr in anderen Funktionen abgerufen werden? Müsste es nur ein Parameter der anderen Funktion sein? z.B. anotherFunction (setupGuessString()); ? – omegacoo

0

Ist erratenWord des Typs Zeichenarray? Ist es ein globales Array?

#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; 
} 

Dies ist der Ausgang Ich sehe ..: Hallo W ;; _______ < --- diese

Verwandte Themen