11.3 Arrays vergleichen 

Mithilfe des Indizierungsoperators [] können Sie zwei int-Arrays auf Gleichheit überprüfen:
/* array6.c */
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
int main(void) {
int i;
int array1[MAX], array2[MAX];
for(i = 0; i < MAX; i++) {
array1[i] = i;
array2[i] = i;
}
array2[5] = 100; /* array2 an Pos. 5 verändern */
for(i = 0; i < MAX; i++) {
if( array1[i] == array2[i] )
continue;
else {
printf("Unterschied an Position %d\n",i);
break;
}
}
return EXIT_SUCCESS;
}Mit der Zeile
if( array1[i] == array2[i] )
werden die einzelnen Werte array1[i] und array2[i] miteinander verglichen. Es werden also alle Elemente der Arrays durchlaufen und verglichen. Folgendes funktioniert allerdings nicht:
if( array1 == array2 )
Ganze Arrays lassen sich nicht miteinander vergleichen. In diesem Fall wurden lediglich zwei Speicheradressen verglichen. Für den Vergleich vollständiger bzw. kompletter Arrays gibt es folgende Funktion:
#include <string.h> int memcmp(const void *adr1, const void *adr2, size_t n);
Diese Funktion vergleicht n Zeichen aus Adresse adr1 und Adresse adr2. Sind beide Speicherbereiche gleich, liefert die Funktion den Wert 0 zurück (zur weiteren Beschreibung dieser Funktion siehe Abschnitt 20.8, »<string.h> – die mem -Funktionen zur Speichermanipulation.« Hierzu ein Beispiel mit der Funktion memcmp():
/* array7.c */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX 10
int main(void) {
int i;
int array1[MAX];
int array2[MAX];
for(i = 0; i < MAX; i++) {
array1[i] = i;
array2[i] = i;
}
array2[5] = 100; /* Verändert array2 an Pos. 5. */
if(memcmp(array1, array2, sizeof(array1)) == 0 )
printf("Beide Arrays haben den gleichen Inhalt\n");
else
printf("Die Arrays sind unterschiedlich\n");
return EXIT_SUCCESS;
}| Internes |
|
Natürlich gilt bei memcmp() im Vergleich zur for-Schleife dasselbe wie schon bei memset(). Auch hierbei ist unter Umständen die Funktion memcmp() um einiges schneller als der Vergleich mit einer for-Schleife, da memcmp() ebenfalls näher an der Hardware operiert. |
Ihre Meinung
Wie hat Ihnen das Openbook gefallen? Wir freuen uns immer über Ihre Rückmeldung. Schreiben Sie uns gerne Ihr Feedback als E-Mail an kommunikation@rheinwerk-verlag.de.




Jetzt bestellen



