Array von Structs via lsearch() / bsearch() durchsuchen

Chosi

Mitglied
So,

nun genieße ich zur Zeit also C Programmierung in der Schule. Es geht gerade um eine Art Adressverwaltungstool.
Alle Adressen befinden sich einem Array aus Structs, welche wiederum die einzelnen Adressdaten beinhalten.
Code:
struct adresse
{
  char name[20];
  char vorname[20];
  char strasse[20];
  char ort[20];
  int  plz;
};  

struct adresse adressen[MAX_SIZE];
Nun zu meinem Problem. Wie ich ein Array aus zB. Strings durchsuche ist klar. Nur wie mache ich das mit einem Struct, wenn ich zB. nach dem namen Suchen mag?

MfG
 
moin


Nach diesem Prinzip:

Code:
while( name nicht gefunden )
{
     if( adressen[x++].name == "hanspeter" )
          break;
}

Du verstehen?


mfg
umbrasaxum
 
moin


lsearch macht das genau so! NUr wesentlich aufwendiger!

Aber hier mal das Beispiel aus der MSDN:
Code:
#include <search.h>
#include <string.h>
#include <stdio.h>

int compare( const void *arg1, const void *arg2 );

int main(void)
{
   char * wordlist[4] = { "hello", "thanks", "bye" };
                            // leave room to grow...
   int n = 3;
   char **result;
   char *key = "extra";
   int i;

   printf( "wordlist before _lsearch:" );
   for( i=0; i<n; ++i ) printf( " %s", wordlist[i] );
   printf( "\n" );

   result = (char **)_lsearch( &key, wordlist, 
                      &n, sizeof(char *), compare );

   printf( "wordlist after _lsearch:" );
   for( i=0; i<n; ++i ) printf( " %s", wordlist[i] );
   printf( "\n" );
}

int compare(const void *arg1, const void *arg2 )
{
   return( _stricmp( * (char**)arg1, * (char**)arg2 ) );
}


mfg
umbrasaxum
 
Ich weiß :-/ ... Geht aber wie gesagt speziell um diese Funktionen ...

Die Benutzung von lsearch() auf ein Array aus Strings ist mir schon klar. Nur wie mache ich das Ganze mit meinem oben genannten Array von Strukturen?
 
Ne, ich muss der Funktion aber doch das komplette Array übergeben. Ich denke, man muss sich in der Vergleichsfunktion dann irgendwie durch die Struktur zum Namen hangeln. Bin mir nur nicht sicher wie.
 
Zurück