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.


Anmelden zum Antworten