Hallo zusammen,
ich bin ein Anfänger was C betrifft und habe mich mal nach längerer Zeit wieder an C herangetraut 
Undzwar will ich in dem Array „zahl“ nach dem nächsten Vorkommen des ersten Elements (zahl[0]) suchen:
...
#define ANZ 1000000
...
unsigned int \*next\_element;
next\_element = &lfind(&zahl[0], zahl, &ANZ, sizeof(int));
Referenz zu lfind:
http://www.gnu.org/software/libc/manual/html_node/Ar…
Also ich bin im Moment noch etwas ungeübt im Umgang mit Zeigern. Der Compiler meckert immer über das dritte Argument, aber ich weiß nicht, was ich stattdessen einsetzen soll. (Kann sein dass noch mehr nicht stimmt…)
Danke schonmal für eure Hilfe,
Nyx
             
            
              
              
              
            
            
           
          
            
            
              Hallo,
Undzwar will ich in dem Array „zahl“ nach dem nächsten
Vorkommen des ersten Elements (zahl[0]) suchen:
…
#define ANZ 1000000
…
unsigned int *next_element;
next_element = &lfind(&zahl[0], zahl, &ANZ, sizeof(int));
lfind erwartet noch ein fünftes Argument, einen Pointer zu einer Funktion, die zwei void-Pointer erwartet und vergleicht:
int\* compare(void\* a, void\* b){
...
}
Mein Versuch (ungetestet) sieht so aus:
int ANZ = 1000000-1;
unsigned int \*next\_element;
next\_element = (unsigned int\*) lfind(zahl, zahl+1, &ANZ, sizeof(int), compare);
Ein Array ist nur ein Pointer auf das erste Element, zahl+1 dann auf das zweite.
Grüße,
Moritz
             
            
              
              
              
            
            
           
          
            
            
              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Б
             
            
              
              
              
            
            
           
          
            
            
              Hallo zusammen,
@ Moritz
Danke für die schnelle Antwort!
Hab deinen Vorschlag gleich ausprobiert. Nur bei der Compare-Funktion hat der Compiler rumgemeckert, hab dann aber eine leicht andere Implementation der Funktion gefunden:
http://www.lrz-muenchen.de/services/compute/linux-cl…
@ Semjon Michailowitsch
Naja, dass es nicht bei der einen Zeile bleibt, wusste ich ja nicht im Voraus  Und ich hatte keine Lust, jeden Sch… selbst zu machen.
 Und ich hatte keine Lust, jeden Sch… selbst zu machen.
Und eigentlich brauche ich nur das erste Vorkommen des gesuchten Elements (hab ich wohl nicht explizit erwähnt), also ist die while-Schleife bei deinem Beispiel mit lfind nicht notwendig oder?
Aber danke trotzdem für die Mühe die du dir mit den zwei Beispielen gemacht hast …
Gruß, Nyx
             
            
              
              
              
            
            
           
          
            
            
              Hallo
@ Semjon Michailowitsch
…
Und eigentlich brauche ich nur das erste Vorkommen des
gesuchten Elements (hab ich wohl nicht explizit erwähnt), also
ist die while-Schleife bei deinem Beispiel mit lfind nicht
notwendig oder?
Ersetze einfach das ‚while‘ durch ‚if‘, denn wenn
nichts gefunden wird, brauchst Du ja auch nichts
auszugeben. Die ‚remainder‘-Berechnung kannst Du
dann auch entfernen.
Warum sollte das Ganze nochmal mit ‚lfind()‘ passieren?
Grüße
CMБ