Gleichheit von char [] in C vergleichen

8

Ich habe zwei Variablen:

%Vor%

Ich möchte prüfen, ob diese beiden gleich sind ... die Verwendung von charTime == buf funktioniert nicht.

Was sollte ich verwenden und kann jemand erklären, warum == nicht funktioniert?

Wäre diese Aktion in C und C ++ anders?

    
rksprst 13.03.2010, 23:10
quelle

5 Antworten

17
%Vor%

C ++ und C (entfernen Sie std:: für C):

%Vor%

Aber der wahre C ++ Weg:

%Vor%

Die Verwendung von == funktioniert nicht, weil es versucht, die Adressen des ersten Zeichens jedes Arrays zu vergleichen (offensichtlich sind sie nicht gleich). Es wird nicht den Inhalt beider Arrays vergleichen.

    
Johannes Schaub - litb 13.03.2010, 23:13
quelle
3

In c können Sie die strcmp-Funktion von string.h verwenden, sie gibt 0 zurück, wenn sie gleich sind

%Vor%     
zellio 13.03.2010 23:13
quelle
1

In einem Ausdruck, der == verwendet, werden die Namen von char -Arrays in char* zerlegt, die auf den Anfang ihrer jeweiligen Arrays zeigen. Der Vergleich wird dann in Bezug auf die Werte der Zeiger selbst und nicht die tatsächlichen Inhalte der Arrays durchgeführt.

== gibt nur true für zwei Zeiger zurück, die auf dieselbe Position verweisen, andernfalls auf false, selbst wenn sie auf zwei Arrays mit identischem Inhalt zeigen.

Was Sie brauchen, ist die Standardbibliotheksfunktion strcmp . Dieser Ausdruck wird als wahr ausgewertet, wenn die Arrays den gleichen Inhalt enthalten (bis zum abschließenden Nullzeichen, das in beiden Arrays vorhanden sein muss, damit strcmp sicher funktioniert).

%Vor%     
Charles Bailey 13.03.2010 23:16
quelle
0

Überprüfen Sie sie in einer for-Schleife. Erhalte die ASCII-Nummern für jedes Zeichen, wenn sie sich nicht mehr gleich sind.

    
anon235370 13.03.2010 23:11
quelle
0

Sie überprüfen die Identität charTime und buf . Um die Gleichheit zu prüfen, durchlaufen Sie jedes Zeichen in einem Array und vergleichen Sie es mit dem zugehörigen Zeichen im anderen Array.

    
lajuette 13.03.2010 23:13
quelle

Tags und Links