W
hat sich erledigt habe das prog nun erst mal am laufen ^^
naja bis auf eine sache, da weiss ich aber nicht wie das geht ^^ deswegen mach ich nichts mehr dran.
hier zum gucken wie ich es gelöst habe
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/* Strukturdeklarationen */
typedef struct {
int tag;
int monat;
int jahr;
} DATUM;
typedef struct {
int persnr;
char name[12];
char vorname[15];
char wohnort[20];
DATUM eintritt;
float gehalt;
} PERSONAL;
/* Funktionsprototypen */
PERSONAL satz_ein (void);
void satz_aus (const PERSONAL *);
void aufnahme (const char *);
void ausgabe(const char *);
//void aendern(const char *, int);
void suchen (const char *, const char *);
float mittel(const char *);
main()
{ int wahl,suchnr;
char datname[80]="persdat.dat_linux",suchname[12];
printf("\n\n\npflege von personaldaten\n\n");
/* printf("dateiname : ");
gets(datname);
*/
do {
printf("\n\n\naufnahme........................... < 1 >\n");
printf("ausgabe ........................... < 2 >\n");
printf("suchen ........................... < 3 >\n");
printf("update ........................... < 4 >\n");
printf("mittelwert ........................ < 5 >\n");
printf("ENDE ........................... < 0 >\n");
printf("ihre wahl : ");
scanf("%d",&wahl);
getchar();
switch (wahl) {
case 1: aufnahme(datname);
break;
case 2: ausgabe(datname);
break;
case 3: printf("suchname: ");
gets(suchname);
suchen(datname,suchname);
break;
//case 4: printf("personalnummer : ");
// scanf("%d",&suchnr);
// getchar();
//aendern(datname,suchnr);
//break;
case 5: printf("mittleres gehalt : %.2f\n",mittel(datname));
break;
case 0: printf("programmende\n");
break;
default: printf("falsche wahl\n");
} /* Ende von switch */
fflush(stdin);
printf("\n\nweiter mit return ");
getchar();
}
while (wahl);
}
void suchen (const char bla[80], const char such[12])
{
PERSONAL datensatz;
long i=0,j,k=0;
FILE *dz;
dz=fopen(bla,"rb");
if (dz==NULL)
{
printf("laden funzt net!");
exit(EXIT_FAILURE);
}
while(such[i]!='\0')
i++;
while (!feof(dz))
{
fread(&datensatz,sizeof (PERSONAL),1,dz);
for(j=0;j<i;j++)
{
if (such[j]==datensatz.name[j])
k++;
}
if (i==k)
satz_aus(&datensatz);
k=0;
}
}
float mittel(const char bla[80])
{
PERSONAL datensatz;
long i=0;
float erg=0;
FILE *dz;
dz=fopen(bla,"rb");
if (dz==NULL)
{
printf("laden funzt net!");
exit(EXIT_FAILURE);
}
while (!feof(dz))
{
fread(&datensatz,sizeof (PERSONAL),1,dz);
erg=erg+datensatz.gehalt;
i++;
}
fclose(dz);
erg=erg/i;
printf("i gleich %ld\n\n",i);
return erg;
}
void aufnahme (const char bla[80])
{
FILE *dz;
PERSONAL datensatz;
long a=1;
dz=fopen(bla,"a");
if (dz==NULL)
{
printf("laden funzt net!");
exit(EXIT_FAILURE);
}
datensatz=satz_ein();
while (a==1)
{
fwrite(&datensatz,sizeof (PERSONAL),1,dz);
printf("weitere datensätze eingeben mit 1");
scanf("%ld",&a);
}
fclose(dz);
}
PERSONAL satz_ein (void)
{
PERSONAL pers1;
printf("persNr?");
scanf("%i%*c",&pers1.persnr);
printf("vorname?");
gets(pers1.vorname);
printf("name?");
gets(pers1.name);
printf("einstellungsdatum,tag?");
scanf("%i",&pers1.eintritt.tag);
printf("einstelungsdatum,monat?");
scanf("%i",&pers1.eintritt.monat);
printf("einstellungsdatum,jahr?");
scanf("%i",&pers1.eintritt.jahr);
printf("gehalt?");
scanf("%f%*c",&pers1.gehalt);
printf("wohnort?");
gets(pers1.wohnort);
return pers1;
}
void satz_aus (const PERSONAL *pers1)
{
printf("persNR:%i\n",pers1->persnr);
printf("Name %s ,Vorname %s\n",pers1->name,pers1->vorname);
printf("einstellungsdatum : %i:%i:%i\n",pers1->eintritt.tag,pers1->eintritt.monat,pers1->eintritt.jahr);
printf("gehalt ist : %.2f\n",pers1->gehalt);
printf("wohnort:%s\n",pers1->wohnort);
}
void ausgabe (const char datname[80] )
{
FILE *dz;
PERSONAL datensatz;
dz=fopen(datname, "rb");
if (dz==NULL)
{
printf("laden funzt net!"); exit(EXIT_FAILURE);
}
fread(&datensatz,sizeof ( PERSONAL),1,dz);
while (!feof(dz))
{
satz_aus(&datensatz);
fread(&datensatz,sizeof (PERSONAL),1,dz);
}
}