(C++) Char
-
aloha
Ich möchte, dass der Cursor an einer über gotoxy() definierten Stelle ein "X" schreibt, wenn der User "A1" eingibt. Soll so eine Art Tic Tac Toe sein
Sie bis jetzt so aus:
cin >> player1;
if (player1=="A1")
{
gotoxy(19,4);
cout << "X";
}player1 ist als char[2] deklariert. Wie muss ich das machen damit das funzt?
-
if(strcmp(player1, "A1") == 0) {
-
schreibe einfach
if(player1 == 'a1')
{
//...
}
müsste funzen
-
@hotblack: Wie kommst du darauf? "a1" ist ein String kein Zeichen .
MfG SideWinder
-
stimmt schon aber so hat es bei mir gefunzt
Und da ist mir das eigentlich egal ob das ein Zeichen ist oder sonst etwas
Ich weiss die Einstellung war gerade seeeeeeehr schlecht
Habe ich sonst eigentlich auch icht aber wenn es funzt , wieso soll man das dann nicht nutzen !
Ich bin kein Profie in C++
Wie würdest du das machen?
Dann kann ich meine Proggs verbessern
-
In C++ würde ich es eigentlich mit einem std::string vergleichen, der unterstützt auch den ==op. Der übernimmt mir das Vergleichen intern.
Bei C-Strings bleibt mir keine andere Wahl als jedes Zeichen mit jedem zu vergleichem -> strcmp().
MfG SideWinder
-
std::string bietet sich an, aber wenn schon mit strcmp, dann wenigstns kurz und bündig:
if (!strcmp(player1,"A1")) {
-
besten dank, mit !strcmp funktioniert es wunderbar. Aber nur zum besseren Verständnis: Was bedeutet !strcmp?
-
String compare
-
strcmp liefert "0" zurück, falls die zu vergleichenden (char*)Strings
gleich sind.
Der If-Block wird nur ausgeführt, falls die Klammer nicht null ist
(=wahr, in c und c++ bedeutet 0 immer logisch falsch, alle anderen Zahlen wahr)
z.B. if (1==1)
1==1 liefert den bool'schen Wert 1 für wahr
1==0 liefert 0 für falsch
! Invertiert das Ganze
Aus !(1==1) wird 0
Aus !(1==0) wird 1x=5; //5 ist wahr, da ungleich Null, x = 5
x=!5; //5 ist wahr, und wird invertiert zu x=0
-
Jetzt wirds aber endgültig nach Standard-C++ verschoben.
MfG SideWinder