[ANSI C] Suche Erstellen

Nurgle

Mitglied
Hallo liebe Gemeinde,

Ich habe ein riesiges Problem, ich soll in Ansi C eine Suche erstellen.
Wie ihr unten am Code sehen könnt habe ich eine Dateistrukur erstellt die in einer Datei gespeichert wird.
Entweder soll die Suche wenn man die Leistungsnummer eingibt (leistungen[j].nr) oder wenn man eine Bezeichnung eingibt (leistungen[j].bezeichnung) soll er den passenden Datensatz ausgeben.

Es soll eine eigene funktion werden. Könnte mir vieleicht jemand helfen? :confused:

PHP:
#include <utility.h>
#include <ansi_c.h>

//Variablendeklaration
struct daten
  {
    char nr;
    char bezeichnung[20];
    double preis;
    double rabatt;
  };
struct daten leistungen[2];
int i=0;



void main(void)
{
FILE *dateizeiger;
//dateizeiger = fopen("leistung.dat","w");


int nummer;
char bez[20];
float pr;
float rab;
int j=0;
//Programmbeginn
Cls();
for (i=0;i<2;i++)	 
    {
       printf("  Eingabe der leistungsdaten  \n\n\n ");
       printf("Bitte geben Sie die Nummerdes %i-ten Artikels ein: ",i);  
       scanf("%i",&nummer);
       printf("Bitte geben Sie die Bezeichnung ein: ");
       scanf("%20s",bez);
       printf("Bitte geben Sie den Preis ein: ");
       scanf("%f",&pr);
       printf("Bitte geben Sie den Rabatt ein: ");
       scanf("%f", &rab);
       
       printf("\n");
       leistungen[i].nr=nummer;
	   strcpy(leistungen[i].bezeichnung,bez);
	   leistungen[i].preis=pr;
	   leistungen[i].rabatt=rab;
    
    
    }

if ((dateizeiger=fopen("leistung.dat","w"))!=NULL)
{
for(j=0;j<2;j++)
	{
	fprintf(dateizeiger, "%i", leistungen[j].nr);
    fprintf(dateizeiger, "%s", leistungen[j].bezeichnung);
    fprintf(dateizeiger, "%8.2f", leistungen[j].preis);
    fprintf(dateizeiger, "%8.2f", leistungen[j].rabatt);
	}
fclose(dateizeiger);
}
  

//Ausgabe

Cls();
for (i=0;i<2;i++)
    {
       printf("\nNummer:      %i", leistungen[i].nr);
       printf("\nBezeichnung: %s", leistungen[i].bezeichnung);
       printf("\nPreis:   %8.2f", leistungen[i].preis);
       printf("\nRabatt: %8.2f", leistungen[i].rabatt);
      
       printf("\n");
    }

for (i=0;i<2;i++)
    {
       printf("\nNummer     Bezeichnung            Preis         Rabatt  \n");
       printf("%i   %-21s %8.2f %8.2f ", leistungen[i].nr,
       leistungen[i].bezeichnung, leistungen[i].preis, leistungen[i].rabatt
       );
    }
    printf("\n");
//system("pause");
}
 
moin


Dann mach ne Abfrage, und durchsuche alle Datensätze in dem du die Eingabe per z.B. strcmp mit dem Abgespeicherten Eintrag vergleichst.


mfg
umbrasaxum
 
Tobias K. hat gesagt.:
moin


Dann mach ne Abfrage, und durchsuche alle Datensätze in dem du die Eingabe per z.B. strcmp mit dem Abgespeicherten Eintrag vergleichst.


mfg
umbrasaxum


Danke für den Tipp, wie setze ich diesen befehl ein?
 
Freund hat mir bissl geholfen dabei ist das rausgekommen

PHP:
int findInString(char string1[], char string2[]){ 
    // Vergleichsfunktion: Gibt 1 zurück falls String2 in String1 enthalten ist, sonst 0. 
    // Groß / Kleinschrubung wird ignoriert 

    int i=0, ii=0, iii=0, len1=0,len2=0; 

    // Stringlänge ermitteln 
    while (string1[len1]!='\0') len1++; 
    while (string2[len2]!='\0') len2++; 

    // Vergleichen 
    for (i=0; i < len1; i++){ 
         for (ii=0; ii < len2; ii ++){ 
              while (string1[i+iii] == string2[ii] || (string1[i+iii] == string2[ii] + 32 ^ string1[i+iii] == string2[ii] - 32)){ 
                   if (ii < len2-1 && (i + iii) < len1) { 
                        ii ++; iii ++; 
                   } 

                   else return 1; // Treffer 
              } 
              iii=0; 
         } 
    } 

    return 0; 
}

Jetzt muss ich das noch irgendwie in das programm einbauen, weiss einer wie?
 
Zuletzt bearbeitet:
Zurück