memcmp problem



  • Hallo,

    hab ein problem mit memcmp - es funktioniert nämlich nicht...

    ich möchte gerne zwei unsigned short ptr miteinander vergleichen (gleiche länge) und die funktion failed...

    z.B. ist die eine zahl 136121120 und die andere 136121110 - der dritte parameter ist die zahl 9.

    Ich kann die zahlen vorher und nach der memcmp funktion ausgeben lassen mittels for-schleife und beide male bekomme ich diese zahlen angezeigt - aber memcmp sagt die zahlen sind gleich...

    compare = memcmp((void *)ptr1, (void *)ptr2, length); 
    //compare ist immer 0
    

    Ich habe keine Ahnung warum das so ist.... 😞 😞 😞

    gruß
    olaf



  • length gibt die Größe in Bytes an. Diese kannst du mit sizeof(*ptr1) ermitteln. Wobei du zwei Zahlen auch einfach mit dem ==-Operator vergleichen kannst.



  • hier mein programmcode...

    unsigned short wert1[] = {1, 3, 6, 1, 2, 1, 1, 1, 0}; 
    	unsigned short wert2[] = {1, 3, 6, 1, 2, 1, 1, 2, 0};
    
    	compare = memcmp((void *)wert1, (void *)wert2, 9);
    

    wenn ich es so ablaufen lasse, zeigt compare den wert 0 an... compare ist vom typ short.

    Warum kann das memcmp nicht, und welche funtion kann das? Oder muss ich die arrays mittels for-schleife vergleichen??? 😞

    olaf



  • musse auch 18 angeben denn unsigned short is meistens 2 byte gross



  • olaf bauer schrieb:

    ich möchte gerne zwei unsigned short ptr miteinander vergleichen (gleiche länge)
    z.B. ist die eine zahl 136121120 und die andere 136121110 - der dritte parameter ist die zahl 9.

    Zum einen: unsigned short int hat eine Range zwischen 0 bis zu 65535 ( 16bit).
    Zum zweiten wuerde ich zwei Zahlen mit != oder == vergleichen, anstatt memcmp.

    Gruss



  • Richtige Größe angeben hilft:

    short var1[] = {1,2,3,4,5,6};
    short var2[] = {1,2,3,4,5,6};
    
    int main( )
    {
        int compare;
    
        compare = memcmp(var1, var2, sizeof(var1));
    
        return 0;
    }
    


  • Es sollten noch 5 Leute das gleiche sagen ⚠



  • olaf bauer schrieb:

    Warum kann das memcmp nicht, und welche funtion kann das? Oder muss ich die arrays mittels for-schleife vergleichen??? 😞
    olaf

    nein. memcmp ist genau richtig für diesen job.
    du hast memcmp die ersten 9 byte der beiden arrays vergleichen lassen, bis dahin sind die ja auch gleich.


Anmelden zum Antworten