(ANSI C) Wie geht das???



  • Hallo, ich möchte in diesem Programm in der Suchfunktion nicht nach dem Erstbuchstaben suche sondern nach einem ganzen Wort! Ich weiß nur nicht wie das funktionieren soll:

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    #include <conio.h>
    #define MAXIMAL 50
    
    static int x;
    
    struct adres {
                   char vname[MAXIMAL];
                   char nname[MAXIMAL];
                   char strasse[MAXIMAL];
                   long PLZ;
                   char ort[MAXIMAL];
              int  geb_jahr;
            }
    adressen[100];
    
    typedef struct adres ADRESSE;
    
    // ----------------------------------------------------------------------
    
    void Eingabe(int nr, ADRESSE *neu)
    {
     printf("
    Vorname: ");
     fgets(neu[nr].vname, MAXIMAL, stdin);
     printf("Nachname: ");
     fgets(neu[nr].nname, MAXIMAL, stdin);
     printf("Strasse: ");
     fgets(neu[nr].strasse, MAXIMAL, stdin); 
     printf("Postleitzahl: ");
     do {
         scanf("%ld",&neu[nr].PLZ);
       } while(getchar()!= '
    ');
     printf("Wohnort: ");
     fgets(neu[nr].ort, MAXIMAL, stdin);
    printf("Geburtsjahr [TTMMJJ]: ");
    do {
         scanf("%d",&neu[nr].geb_jahr);
       } while(getchar()!= '
    ');
    }
    
    // ----------------------------------------------------------------------
    
    void Suche(ADRESSE *search, char buchstabe, int nr)
    {
     int i;
     for(i=0; i<=nr; i++)
     {
      if(search[i].nname[0] == buchstabe || search[i].vname[0] == buchstabe)
       {
        printf("
    
    Gefunden unter Buchstabe :"%c"
    
    ",buchstabe);
        printf("Vorname.........:%s",search[i].vname);
        printf("Nachname........:%s",search[i].nname);
        printf("Strasse.........:%s",search[i].strasse);
        printf("Postleitzahl....:%ld
    ",search[i].PLZ);
        printf("Ort.............:%s",search[i].ort);
        printf("Geburtsjahr.....:%d
    ",search[i].geb_jahr);
        printf("
    	Weiter mit <ENTER>
    ");
        getchar();
       }
      }
    }
    
    // ----------------------------------------------------------------------
    
    void Ausgabe(ADRESSE *all, int nr)
    {
     int i;
    
     for(i=0; i<nr; i++)
      {
       printf("
    Vorname.........:%s",all[i].vname);
       printf("Nachname........:%s",all[i].nname);
       printf("Strasse.........:%s",all[i].strasse);
       printf("Postleitzahl....:%ld
    ",all[i].PLZ);
       printf("Ort.............:%s",all[i].ort);
       printf("Geburtsjahr.....:%d
    
    ",all[i].geb_jahr);
    
       if((!(i%2))&& i!=0)
        {
         fflush(stdin);
         printf("
    	Weiter mit <Enter>
    
    ");
         getchar();
        }
      }
    }
    
    // ----------------------------------------------------------------------
    
    void Sort(ADRESSE *sort,int nr)
    {
     ADRESSE *temp;
     int i,j;
    
     for(i=0; i<nr; i++)
      {
       for(j=i+1;j<nr;j++)
        {
         if(strcmp(sort[i].nname, sort[j].nname)>0)
          {
           *temp=sort[j];
           sort[j]=sort[i];
           sort[i]=*temp;
          }
        }
      }
     printf(".....Sortiert!!
    ");
    
    }
    
    // ----------------------------------------------------------------------
    
    int main()
    {
     int auswahl;
     char c;
    
     do {
           printf("
    -1- Neue Daten eingeben
    ");
           printf("-2- Bestimmte Daten Ausgeben
    ");
           printf("-3- Alle Daten Ausgeben
    ");
           printf("-4- Daten Sortieren
    ");
           printf("-5- Programm beenden
    ");
           printf("
    Ihre Auswahl : ");
           scanf("%d",&auswahl);
           fflush(stdin);
    
           switch(auswahl)
           {
            case 1 : Eingabe(x++,adressen);
                     break;
            case 2 : printf("
    Anfangsbuchstabe des Vorn. oder Nachn. (Achte auf Groß- und Kleinschreibung):");
                     do {
              scanf("%c",&c);
              }
           while(getchar()!= '
    ');
                     Suche(adressen,c,x);
                     break;
            case 3 : Ausgabe(adressen,x);
                     break;
            case 4 : Sort(adressen,x);
                     break;
            default: break;
           }
        }
        while(auswahl <5);
     return 0;
    }
    

    Bei antworten bitte eine mail an: skulltor@gmx.de

    Ich danke euch schon mal!

    MfG

    Skulltor

    Bitte Code-Tags verwenden: So funktioniert das Syntaxcoloring:

    [ Dieser Beitrag wurde am 16.06.2003 um 22:28 Uhr von HumeSikkins editiert. ]



  • Hi,
    ich hoffe das ist Richtig so. Das gehört in der Form aber mehr nach ANSI-C. Die Änderungen hab ich Fett gemacht.
    [cpp]
    void Suche(ADRESSE *search, char *wort, int nr)
    {
    int i;
    for(i=0; i<=nr; i++)
    {
    if( strcmp(search[i].nname, wort) || strcmp(search[i].vname, wort) )
    {
    printf("\n\nGefunden unter Suchwort :\"%s\"\n\n",wort);
    printf("Vorname.........:%s",search[i].vname);
    printf("Nachname........:%s",search[i].nname);
    printf("Strasse.........:%s",search[i].strasse);
    printf("Postleitzahl....:%ld\n",search[i].PLZ);
    printf("Ort.............:%s",search[i].ort);
    printf("Geburtsjahr.....:%d\n",search[i].geb_jahr);
    printf("\n\tWeiter mit <ENTER>\n");
    getchar();
    }
    }
    }
    [/cpp]
    grüße Con@n

    [ Dieser Beitrag wurde am 17.06.2003 um 01:58 Uhr von Con@n editiert. ]


Anmelden zum Antworten