char-Arrays: Vergleich
-
Mahlzeit.
Folgender Code (Mastermind soll implementiert werden):
//Die Eingabe des Codierers muss in dieser Version bspw. mit Post-it abgeklebt werden #include <stdio.h> int main(){ int i, count; char a[6]; // 4 Farben des Codieres, Positionen aus Laufindex i char b[6]; // -"- des Spielers, -"- printf("Codierer: Code eingeben\n"); fgets(a, 6, stdin); //6 wegen \0 und [Enter] while(b != a){ printf("Spieler: Code eingeben\n"); fgets(b, 6, stdin); for(i=0; i<4; i++){ if(b[i] == a[i]){ printf("x"); } else{ printf("o"); } } printf("\n"); count++; } printf("Glueckwunsch! Sie haben in %i Zuegen gewonnen!", count); system("Pause"); return 0; }
Das Programm beendet nicht, auch wenn das richtige eingegeben wird. Die Arrays stimmen also offensichtlich nie überein.
Warum?
(Das Array ist übrigens 6 El. groß, da mit 4 bzw. 5 gar nix geht...)
-
bastardbychoice schrieb:
char a[6]; // 4 Farben des Codieres, Positionen aus Laufindex i char b[6]; // -"- des Spielers, -"- while(b != a){ // }
In diesem Kontext werden b und a jeweils als Zeiger auf ihr erstes Element ausgewertet. Diese sind logischerweise niemals identintisch. Du könntest die Funktion memcmp aus string.h nutzen, oder dir eine eigene Vergleichsfunktion schreiben.
Bitte auch folgende Artikel bezüglich Array&Pointer lesen:
http://c-faq.com/aryptr/index.html
-
Habs mit memcmp gemacht.
Funktioniert einwandfrei!
Danke!