Struktur durchsuchen



  • Hallo,
    ich hab ein kleines Problem, mein Programm stürzt immer ab. Es soll aus einer .dat Datei die ich extra habe über eine Sturktur Kundendaten auslesen. Dieses habe ich schon hinbekommmen. Nur wollte ich es jetzt erweitern, so das man nach einem Kundennamen suchen kann und nicht der gesamte Inhalt ausgegeben wird. Nur da hab ich Probleme 😞 weis nicht mehr weiter. An der stelle wo ich es erweitert hab, ist es kommentiert. Würd mich freuen wenn mir jemand helfen kann 😞

    [cpp]

    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>

    struct Satz{
    char Inhaber[21];
    char Nachricht[61];
    char Kontonummer[11];
    float Guthaben;
    float Auftrag;
    unsigned short Anzahl;
    float Zinssatz;
    }__attribute__ ((packed));
    char iabfrage[21];

    int main()
    {

    printf("Bitte geben Sie den Namen an");
    gets("iabfrage");
    //abfrage des inhabers (Tastatureingabe)
    struct Satz Kasse;
    FILE *fh;
    int num_read;
    fh = fopen("Kasse.dat","rb");
    while (!feof(fh))
    {

    num_read=fread(&Kasse,sizeof(Kasse),1,fh);

    if(Kasse.Inhaber==iabfrage)
    //wenn kasse.inhaber=iabfrage oder kasse.kontonummer=kabfrage

    {

    printf("Inhaber: %s\n",Kasse.Inhaber);
    printf("Nachricht: %s\n",Kasse.Nachricht);
    printf("Kontonummer: %s\n",Kasse.Kontonummer);
    printf("Guthaben: %f\n",Kasse.Guthaben);
    printf("Auftrag: %f\n",Kasse.Auftrag);
    printf("Anzahl: %d\n",Kasse.Anzahl);
    printf("Zinssatz: %f\n\n",Kasse.Zinssatz);

    }

    }

    fclose(fh);
    getch();
    return 0;
    }

    [\cpp]



  • Wäre vielleicht sinnvoll, bei gets("iabfrage"); die "" wegzumachen.



  • Stimmt danke schön! Man bin ich blöd... Jetzt stürzt es nicht mehr ab. Nur meien .dat Detei wird immernoch nicht durchsucht bzw der richtige Kunde ausgegeben. 😞



  • Strings kann man nicht mit == vergleichen. Schau dir mal man: strcmp an.

    Und das mit den [cpp]-Tags üben wir nochmal 😉

    Edit: Und gets ist eh böse. man: fgets dagegen ist geil-o-mat.



  • Aber wie kann ich das den genau machen mit strcmp. Ich hab es zwar schon probiert aber ich bekomme es nicht hin! 😞 Wie müsste der Quelltest in etwa aussehen?

    LG



  • aus

    if(Kasse.Inhaber==iabfrage)
    ...
    

    mach

    if(0==strcmp(Kasse.Inhaber,iabfrage))
    ...
    


  • das ist ja fantastisch! Recht vielen dank! Es klappt 🙂



  • Wenn man fgets() zum einlesen nimmt, muss man dazu vorher noch das '\n' aus dem String entfernen. Das macht man am besten mit

    char *newl;
    
    if( (newl = strchr(iabfrage, '\n')) ){
        *newl = '\0';
    }
    

    Oder man nimmt im gleichen Code strrchr(), dann ist auch ruediger zufrieden 🤡


Anmelden zum Antworten