Vergleich von Arrays
-
Hallo Leute,
ich möchte zwei Zeichenarrays vergleichen, die eigentlich den selben Inhalt haben, aber der Vergleich bringt die Aussage, dass die Felder unterschiedlich sind.
Die Arrays buffer und vglbuffer werden mit einer Zahlenfolge von 1 bis 1000 aufgefüllt und dann verglichen.#include "stdio.h" int _tmain(int argc, _TCHAR* argv[]) { wchar_t buffer[500]; unsigned long buffersize = sizeof(buffer); wchar_t vglbuffer[500]; unsigned long vglbuffersize = sizeof(vglbuffer); unsigned long zaehler; // 1. Hochzaehlvorgang for(zaehler = 0; zaehler < buffersize; zaehler++) { buffer[zaehler] = zaehler; } // Ausgabe der 1. Hochzaehlung printf("\nBufferinhalt:\n"); for(zaehler = 0; zaehler < buffersize; zaehler++) { printf("%d", buffer[zaehler]); } // 2. Hochzaehlvorgang for(zaehler = 0; zaehler < vglbuffersize; zaehler++) { vglbuffer[zaehler] = zaehler; } // Buffervergleich und Ausgabe if(buffer == vglbuffer) { printf("\n\nBuffer stimmt mit Vergleichbuffer ueberein!\n"); } else { printf("\n\nBuffer stimmt nicht mit Vergleichbuffer ueberein!\n"); printf("\n Vergleichbufferinhalt:\n"); for(zaehler = 0; zaehler < vglbuffersize; zaehler++) { printf("%d", vglbuffer[zaehler]); } } return 0; }
Wer kann mir hier weiterhelfen, dass mein Vergleich stimmt?
-
if(buffer == vglbuffer)
Hier vergleichst du zwei Speicheradressen, deswegen die Aussage.
Mußt halt eine Schleife durch die Arrays laufen lassen und einzeln vergleichen...
Könnte z.B. so aussehen:#include <stdio.h> int main() { int i; int a1[10]; int a2[10]; for(i=0; i<10; i++) { a1[i]=i; a2[i]=i; } a2[7]=12; for(i=0; i<10; i++) { if( a1[i] == a2[i] ) continue; else { printf("Unterschied an Position %d\n",i); break; } } return 0; }
Hoffe, daß dir das hilft!
-
Da die Arrays eh Char-Vektoren sind, kannst du zum Vergleichen einfach strcmp() missbrauchen.
-
AJ schrieb:
Da die Arrays eh Char-Vektoren sind, kannst du zum Vergleichen einfach strcmp() missbrauchen.
Nein, kann er nicht. Schon das erste Element ist ja Null, da bricht strcmp sofort ab.
-
@MFK
Oh stimmt, das hab ich glatt übersehen. Naja dann muss man sich hald die Mühe machen und es per Hand programmieren. Ist ja nicht die Weltgeschichte
-
Vielleicht hilft dir ja memcmp aus der string.h weiter.