Fehlersuche

#1
Guten Tag liebes Forum,

im Anhang findet ihr einen fehlerhaften Sourcecode. (logischer Programmfehler)
Er laeuft zwar ohne Probleme jedoch wird bei einer richtigen eingabe, nicht Feedback gegeben,

dass der Benutzer das richtige Wort eingegeben hat.

Danke im vorraus fuer eure Tipps.

LG Malte

ps: zum kompilieren wird die Bibliothek readline.h benoetigt


C:
#include <stdio.h>
#include <string.h>
#include "readline.h"

void printGreetingAndExplanation()
{
   printf("Du musst ein Wort raten.\n");
}

void printSuccessMessage()
{
   printf("Das ist richtig!! \n");
}

void addCharToHint(char* hint, char* solution) //!
{
   unsigned int hintLength = strlen(hint);
   hint[hintLength] = solution[hintLength];
   hint[hintLength+1] = '\0';
}

void produceAndPrintHint(char* hint, char* solution)
{
   addCharToHint(hint, solution);
   printf("Das war falsch. Das Wort faengt so an: %s\n", hint);
}

char suggestionIsCorrect(char* solution, char* suggestion)
{
   return (solution == suggestion);
}

void guessUntilCorrect(char* solution)
{
   char hint[100] = "";
   while ( 1 )
   {
      printf("Versuch es: ");
      char suggestion[100] = "";
      readLine(suggestion, 100); // was macht readline?
      if ( suggestionIsCorrect(solution, suggestion) ) break;
      produceAndPrintHint(hint, solution);
   }
}

int main()
{
   char solution[100] = "Liebesfilm";
   printGreetingAndExplanation();
   guessUntilCorrect(solution);
   printSuccessMessage();
   return 0;
}
 

asc

Well-Known Member
c-b Experte
#2
Naja, du musst wohl die Funktion aufrufen...
C:
void guessUntilCorrect(char* solution)
{
   char hint[100] = "";
   while ( 1 )
   {
      printf("Versuch es: ");
      char suggestion[100] = ""; // nicht richtig initialisiert!
      readLine(suggestion, 100); // was macht readline?
      if ( suggestionIsCorrect(solution, suggestion) ) {
          printSuccessMessage();
          break;
      }
      produceAndPrintHint(hint, solution);
   }
}
Nur wird diese Funktion dir nicht das Ergebnis liefern, das du erwartest:
C:
char suggestionIsCorrect(char* solution, char* suggestion)
{
   return (solution == suggestion);
}
Zeichenketten kannst du mit strcmp() vergleichen.
 
Oben