array vergleichen
-
Hallo ich möchte zwei arrays miteinander vergleichen.
so funktioniert es nicht. Er geht mir so nie in das "if" rein.
muss ich da jedes einzele element von 2 array miteinander vergleichen oder gibts da noch ne andere elegante möglichkeit?mfg andi 0815
int main() { static unsigned char array_a[2]; static unsigned char array_b[2]; array_a[0]=2; array_a[1]=4; array_a[0]=2; array_b[1]=4; if (array_a==array_b) { printf("hallo\n"); } return 0; }
-
Das kann nicht funktionieren, da du die Startadressen der beiden Arrays vergleichst, welche logischerweise nicht identisch sein können.
memcmp() macht was du suchst.
-
das geht bei mir nicht embedded sind library funktionen nicht gut. dann muss ich mir memcmp() wohl selbst schreiben oder eben doch einfach die inhalte vergleichen. was memcmp() im endefekt wohl auch macht.
aber danke mal
gruß andi 0815
-
dann nimmste:
#include <stdio.h> int cmp( unsigned char *dest, unsigned char *src, size_t len ) { unsigned char *till = dest + len; while( dest < till ) { if( *dest != *src ) return 0; ++dest; ++src; } return 1; } int main() { static unsigned char array_a[2] = { 2, 4 }; static unsigned char array_b[2] = { 2, 4 }; if( cmp( array_a, array_b, 2 ) ) printf("hallo\n"); return 0; }
Greetz, Swordfish
-
andi 0815 schrieb:
das geht bei mir nicht embedded sind library funktionen nicht gut.
memcmp ist doch meistens harmlos. ist oft 'ne kleine schnelle asm-routine. nur sowas wie 'sprintf' ist fies...
edit: falls du immer zwei bytes vergleichen willst und deine 'int's auch 2 bytes sind, dann kannste's so machen
if (*(int*)array1 == *(int*)array2) { // gleicher inhalt }