005
13.11.2005, 18:35 Uhr
~zeichen zuweisen
Gast
|
C++: |
#include <stdio.h> #include <conio.h> #include <string.h> #include <windows.h>
typedef struct{ int day; int month; int year; }back;
typedef struct{ char street_housenr[50]; int plz; char place[50]; }wohndaten;
typedef struct{ char fname[50]; char vname[50]; }persondaten;
typedef struct{ char ausweisnr[7]; persondaten name; wohndaten adresse; back backdate; }ausleih;
typedef struct{ char s1[15]; char s2[15]; char s3[15]; }s;
typedef struct{ char autor1[50]; char autor2[50]; }aut;
typedef struct{ int booknr; char ausborgtyp; char title[50]; aut autoren; int erscheinungsjahr; char verlag[50]; s schlagwort; ausleih ausleihdaten; }book;
int allocate(book **b); int setzen(book *b, char filename[]);
int main(int argc, char **argv){ char eingabefile[30]; int i=0; book *bu; printf("Bitte geben Sie den Filename ein: "); gets(eingabefile);
allocate(&bu); setzen(bu, eingabefile);
return 0; }
int allocate(book **b){ if((*b=(book *) calloc(50, sizeof(book *)))==NULL){ printf("\nError: Speicherplatz konnte nicht reserviert werden\n"); } return 0; }
int setzen(book *b, char filename[]){
int i=0, j=0; char filedata[1000][1000], hilf[1000], *eptr=NULL; FILE *fp=NULL;
fp=fopen(filename,"rt");
while((fgets(hilf,sizeof(hilf)-1,fp))!=NULL){ if(hilf[strlen(hilf)-1]=='\n'){ hilf[strlen(hilf)-1]='\0'; } strcpy(filedata[i], hilf); //printf("%s\n", filedata[i]); i++;
}
for(i=0; i<40; i++){ b[i].booknr=strtol(filedata[j], &eptr, 10); j++; b[i].ausleihdaten=(char)filedata[j]; //hier ist der Fehler, ich will in b[i].ausleihdaten ein einzelnes Zeichen speicher wie N j++; strcpy(b[i].title, filedata[j]); j++; strcpy(b[i].autoren.autor1, filedata[j]); j++; strcpy(b[i].autoren.autor2, filedata[j]); j++; b[i].erscheinungsjahr=strtol(filedata[j], &eptr, 10); j++; strcpy(b[i].verlag, filedata[j]); j++; strcpy(b[i].schlagwort.s1, filedata[j]); j++; strcpy(b[i].schlagwort.s2, filedata[j]); j++; strcpy(b[i].schlagwort.s3, filedata[j]); j++; strcpy(b[i].ausleihdaten.ausweisnr, filedata[j]); j++; strcpy(b[i].ausleihdaten.name.fname, filedata[j]); j++; strcpy(b[i].ausleihdaten.name.vname, filedata[j]); j++; strcpy(b[i].ausleihdaten.adresse.street_housenr, filedata[j]); j++; b[i].ausleihdaten.adresse.plz=strtol(filedata[j], &eptr, 10); j++; strcpy(b[i].ausleihdaten.adresse.place, filedata[j]); j++; b[i].ausleihdaten.backdate.day=strtol(filedata[j], &eptr, 10); j++; b[i].ausleihdaten.backdate.month=strtol(filedata[j], &eptr, 10); j++; b[i].ausleihdaten.backdate.year=strtol(filedata[j], &eptr, 10); j++; }
fclose(fp);
return 0; }
|
Mfg. zeichen zuweisen
mod edit: 1. Benutze die CPP Tags selber 2. Keine Doppelpost Dieser Post wurde am 13.11.2005 um 22:46 Uhr von Pablo editiert. |