datei teilweise ausgeben
-
vestimmte teile einer datei auszugeben
bzw ne bestimmte anzahl an bytes auszulesen.
von pos= 0;
bis pos= 9;leider bringt er mir mit meinem prog nur immer das erste zeichen 9 mal auf den bildschirm aber warum?
void show_ds(int auswahl,int struct_size) { int pos,pos_end; char zeichen; FILE *datei; datei=fopen("daten.txt","rb"); if(datei != NULL) { pos= struct_size*auswahl; // = 0 pos_end = struct_size*(auswahl + 1); // = 9 // printf("%i\n",pos); // printf("%i\n",pos_end); do{ fseek(datei,pos,SEEK_SET); datei=fopen("daten.txt","rb"); fread(&zeichen, sizeof(char),1,datei); printf("%c",zeichen); pos++; }while (pos != pos_end); } fclose(datei); }
-
Hast du auch mal nachgesehen, was für ein Wert als 'auswahl' und 'struct_size'' übergeben wurde?
PS: btw kannst du mit fread() auch einen kompletten Block aus der Datei einlesen:
char* data=malloc(struct_size); fseek(datei,pos) fread(data,struct_size,1,datei);
PPS: Was soll eigentlich der fopen()-Aufruf dort in der Schleife?
-
CStoll schrieb:
Hast du auch mal nachgesehen, was für ein Wert als 'auswahl' und 'struct_size'' übergeben wurde?
PS: btw kannst du mit fread() auch einen kompletten Block aus der Datei einlesen:
char* data=malloc(struct_size); fseek(datei,pos) fread(data,struct_size,1,datei);
PPS: Was soll eigentlich der fopen()-Aufruf dort in der Schleife?
funktioniert nicht weil struct size int und data char * ist
-
Dragonslayer schrieb:
funktioniert nicht weil struct size int und data char * ist
Was meinst du damit? fread() erwartet als erste Parameter einen void* und zwei size_t - aber sowohl die Umwandlung char* -> void* als aus int -> size_t sollte eigentlich jeder Compiler beherrschen.