If klappt nicht?
-
Hi! Ich wollte mal dieses TicTacToe anfangen. Aber wieso geht dieses If nicht?
Also man soll das Feld eingeben wo das X/O hinsoll.Wenn man A1 eintippt passiert da aber nichts
int main(void) { char feld[3][3]; int n=0; char Auswahl[4]; feld[0][0]='*'; feld[0][1]='*'; feld[0][2]='*'; feld[1][0]='*'; feld[1][1]='*'; feld[1][2]='*'; feld[2][0]='*'; feld[2][1]='*'; feld[2][2]='*'; while(n!=1) { printf(" A B C \n"); printf(" +----+----+----+\n"); printf("1 %c %c %c \n" ,feld[0][0],feld[0][1],feld[0][2]); printf(" +----+----+----+\n"); printf("2 %c %c %c \n",feld[1][0],feld[1][1],feld[1][2]); printf(" +----+----+----+\n"); printf("3 %c %c %c \n",feld[2][0],feld[2][1],feld[2][2]); printf(" +----+----+----+"); printf("\n\n"); printf("Wo wollen Sie ihr Zeichen setzen? (z.B. A1):\t"); scanf("%s",Auswahl); if(Auswahl=="A1") feld[0][0]='X'; } printf("\n"); system("PAUSE"); }
-
Das if "geht" durchaus, es tut nur nicht, was du offenbar erwartest. == bewirkt bei Arrays (und Zeigern) einen Vergleich der Adresse, nicht des Inhalts.
Benutz strcmp.
-
/* dein code */ char Auswahl[4] = {'\0'} ; /* tue was */ if(strcmp(Auswahl,"A1")==0) /* oder strncmp(Auswahl,"A1",2)==0 nur 2 chars */ fprintf(stdout, "Sie haben A1 gewaehlt\n") ; else fprintf(stdout, "Kein gueltiger Eingabe:%s\n", Auswahl) ; /* dein code geht weiter */
-
Hallo,
So wie du es machst, kannst du Zeichenketten in C nicht vergleichen. Dazu musst du die Funktion strcmp() verwenden!
-
Bitte noch ca. 10-15 Leute das gleiche schreiben.
-
strcmp() ist was Du suchst
MFG.
-
evtl. strcmp verwenden
-
oder mit memcmp
ich würde aber strcmp verwenden
-
Hat schon jemand strcmp (oder u. U. strncmp) erwähnt?
-
Hast du es schonmal mit strcmp versucht?