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???
olafnein. 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.