memcmp nachprogrammieren
-
Hallo, ich hab mal versucht die memcmp nach zu programmieren:
#include <stdio.h>
#include <math.h>
#include <stddef.h>int memcmp (const void *s1, const void *s2, size_t n)
{
int i;
unsigned char *ptr1;
unsigned char *ptr2;ptr1=s1;
ptr2=s2;for(i=0; (unsigned)i<n; i++)
{
if((i+ptr1)!=(i+ptr2))
{
return 0;
}
return 1;
}
}Das Programm liefert aber stets eine 1, also die Gleichheit. Kann mir jemand erklären warum? Wo finde ich eigentlich den Code der Bibliothesfunktion?
mfg, Martin
-
Auf den ersten Blick... da fehlt ein else. Nach deme rsten durchlauf wird return 1 aufgerufen!
-
Safado schrieb:
Wo finde ich eigentlich den Code der Bibliothesfunktion
guckst du: http://www.opensource.apple.com/darwinsource/WWDC2004/gcc_legacy-939/libiberty/memcmp.c
edit: geht aber char-weise durch den speicher. eine schnelles 'memcmp' sollte besser 'int' nehmen
-
Safado schrieb:
Wo finde ich eigentlich den Code der Bibliothesfunktion?
hier kannste auch danach schauen
-
Statt diese Geschichte for(i=0; (unsigned)i<n; i++) (was auch hier komplett sinnloss ist, ich meine das casten mit unsigned) deklariere i als size_t
int mem... { size_t i; ... for(i=0; i<n; ++i) ... }