Hallo
ich bin ein Anfänger was C betrifft und habe mich mal nach
längerer Zeit wieder an C herangetraut
Und zwar will ich in dem Array „zahl“ nach dem nächsten
Vorkommen des ersten Elements (zahl[0]) suchen:
next_element = &lfind(&zahl[0], zahl, &ANZ, sizeof(int));
Warum mit lfind()? Das erscheint bei diesem
einfachen Beispiel unverständlich. Warum
nicht einfach im Array nachsehen?
Moritz hat ja schon das Nötige zu den Fehlern gesagt,
ich bringe mal ein Vergleichsbeispiel, wie man ‚lfind‘
und ‚simplen Vergleich‘ bei der Suche aller vorgegebenen
Werte in einem Feld einsetzen könnte.
erstmal mit lfind:
#include
#include
#include
#include
#define ANZ 1000000
int ui\_compare(const void \*p1, const void \*p2)
{
return \*(unsigned int\*)p1 - \*(unsigned int\*)p2;
}
void mit\_lfind()
{
unsigned int i, anzahl = ANZ;
unsigned int remaining = anzahl;
unsigned int \*zahl = malloc(anzahl \* sizeof(\*zahl));
unsigned int \*next\_element = zahl;
assert(zahl != 0);
for(i=0; i%u kommt bei Pos [%u]\n", \*next\_element, next\_element-zahl);
remaining = anzahl - (next\_element - zahl);
}
free(zahl);
}
und dann ohne lfind:
#include
#include
#include
#define ANZ 1000000
void ohne\_lfind()
{
unsigned int i, anzahl = ANZ;
unsigned int \*zahl = malloc(anzahl \* sizeof(\*zahl));
unsigned int \*next\_element = zahl;
assert(zahl != 0);
for(i=0; i %u kommt bei zahl[%u]\n", \*next\_element, next\_element-zahl);
free(zahl);
}
wie man sieht, ist es ohne lfind ganz einfach.
Aber möglicherweise wolltest Du gerade ‚lfind‘ übungs-
weise einsetzen?
Grüße
CMБ