Array Zuweisungsproblem
-
Hi,... Code:
char ioo[5] ; printf("Moechten Sie Xfce jetzt installieren? (ja/nein) "); scanf("%s", ioo); if ( ioo == "ja") { printf("JA\n"); } else { printf("Falsch\n"); }
Ich weiss nicht wieso aber wenn ich ja eingebe sagt er Falsch.
Was mache ich falsch?Vielen dank
-
hi
strings kann man nicht einfach so == vergleichen.
schau dir mal die funktion strcmp() an.lg icepacker
-
Du vergleichst die Anfangsadresse des Arrays ioo mit "ja", das kann nur flasch sein!
-
ich dachte es geht doch irgendwie ohne den strcmp
kann man nicht einen zeiger auf eine speicheradresse wo ein "ja" drin ist und das mit dem array vergleichen?Dh. Kann man nicht ein Element mit einem Zeiger vergleichen?
Ich kann mich nicht mehr erinnern
-
kann man, aber macht keinen sinn, weil du so identitaet ueberpruefst. das willst du aber nicht. du willst gleichheit und die prueft nur strcmp().
-
identitaet
wieso das?
Kannst mir das kurz erklären?vielen dank
-
Pointer-Vergleich ist nunmal so definiert, daß er auf Identität (beide Pointer zeigen auf den selben Speicherblock) prüft. Und Arrays werden hier (mal wieder) als Pointer reinterpretiert.
Fazit: Wenn du auf Gleichheit (hinter beiden Pointern steht der selbe Inhalt) prüfen willst, führt kein Weg an strcmp und Kollegen vorbei.
ich dachte es geht doch irgendwie ohne den strcmp
Irgendwie geht es schon - du kannst auch memcmp verwenden oder die Strings zeichenweise in einer for()-Schleife vergleichen
-
memcmp kenn ich auch aber mit for-schleife ist schon hard
-
harte Probleme erfordern harte Gegenmaßnahmen
(und wenn du zu fein bist, ANSI C Funktionen zu nutzen, bleibt nicht mehr viel außer dem direkten Weg)
PS: Du könntest natürlich auch auf C++ umsteigen und mit std::string arbeiten - deren operator== führt einen Wertevergleich durch.
-
Ich will schon gut C können und will auch nicht umsteigen.
Aber gut zu wissen.