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.


Anmelden zum Antworten