Vergleichen Sie die Gleichstellung von char[] in C
Habe ich zwei Variablen:
char charTime[] = "TIME";
char buf[] = "SOMETHINGELSE";
Ich möchte, um zu überprüfen, ob diese beiden gleich sind... mit charTime == buf
funktioniert nicht.
Was sollte ich verwenden, und kann jemand erklären, warum mit ==
funktioniert nicht?
Wäre diese Aktion werden verschiedene in C und C++?
- btw:
char[]
ist ein unvollständiger Typ ist.charTime
ist eigentlich der Typchar[5]
undbuf
ist eigentlich der Typchar[14]
. Der compiler für uns zählt in diesem Fall zum abschließen der Typ.
Du musst angemeldet sein, um einen Kommentar abzugeben.
C++ und C (entfernen
std::
für C):Aber die wahre C++ Art:
Mit
==
funktioniert nicht, weil es versucht, zu vergleichen mit den Adressen des ersten Zeichens der einzelnen array (offensichtlich, Sie sind nicht gleich). Es wird nicht vergleichen Sie den Inhalt der beiden arrays.==
eigentlich eine content-Vergleich, statt dem "default" -char[]
's==
, die Referenz-Vergleich.bool
geben. So würden Sie wahrscheinlich nur brauchen, um zu definieren, es mit MSVC.bool
geben. Sie müssen<stdbool.h>
nutzen zu könnenbool
obwohl, oder Sie müssen verwenden Sie den built-in-Typ_Bool
(die diebool
wird ein#define
für) oder einfach nurint
.In c können Sie die Funktion strcmp aus string.h, es gibt 0 zurück, wenn Sie gleich sind
In einem Ausdruck verwenden
==
die Namen derchar
arrays Zerfall inchar*
Hinweis auf den Beginn der jeweiligen arrays. Der Vergleich ist dann durchzuführen, in Bezug auf den Werten der Zeiger selbst und nicht den eigentlichen Inhalt des arrays.==
wird nur true zurückgeben, für zwei Zeiger zeigen auf den selben Speicherort, und false sonst, auch wenn Sie auf zwei Felder mit identischem Inhalt.Was Sie brauchen, ist die standard-Bibliothek-Funktion
strcmp
. Dieser Ausdruck ergibt true, wenn die arrays enthalten den gleichen Inhalt (bis auf das abschließende null-Zeichen, die vorhanden sein müssen, in beiden arrays herstrcmp
um sicher zu arbeiten).Überprüfen Sie Sie in einer for-Schleife. Holen Sie sich die ASCII-Nummern für jeden char, sobald Sie sich ändern sind Sie nicht gleich.
Sind Sie die überprüfung der Identität
charTime
undbuf
. Zum überprüfen der Gleichheit, Schleife über jedes Zeichen in ein array und vergleichen Sie diese mit den entsprechenden Zeichen in dem anderen array.