WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

FID bei FOPEN

 

dani1632
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 65
Anmeldedatum: 28.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.03.2009, 13:46     Titel: FID bei FOPEN
  Antworten mit Zitat      
Hallo!
Ich habe ein Problem mit dem FID bei der Funktion fopen:
So wie ich das verstanden habe, ist der fid ein file-pointer, der immer auf das aktuelle Byte zeigt, das ausgelesen werden soll.

Code:


fid = fopen(measfile,'r');
hdr_len = fread(fid, 1, 'uint32');      % 4 bytes
 


measfile ist eine .dat-datei mit beliebigen binären daten. Die ersten 4 Bytes sind die Lämge des Headers(hdr_len).

Wenn ich das Programm zum ersten mal starte und zwishcen den beiden angegebenen Zeilen einen breakpoint setze, und mir das fid dann anschau dann ist fid=3. warum???? Ich hätte gedacht dass fid zuerst auf das erste Byte zeigen soll (also fid=0) wenn ich zu lesen beginne. Wenn ich dann einen "Step" weiter geh, liest er die ersten 4 Bytes aus und speichert sie als variable ab. Danach ist fid noch immer 3.

Wenn ich nun den debug mode beeende und das Programm neu starte, dann ist fid=4 und nach noch einem neuen start ist fid =5 usw...

Kann mir das bitte jemand erklären???
DANKE, lg
Private Nachricht senden Benutzer-Profile anzeigen


Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 16.03.2009, 11:37     Titel:
  Antworten mit Zitat      
Hallo dani1632,

fid steht hier als Abkürung für "file identifier" und die Variable zeigt nur auf die geöffnete Datei, nicht auf das aktuelle Byte.

Die erste Datei, die geöffnet wird, erhält standardmäßig die Nummer 3. Werden weitere Dateien geöffnet, erhalten sie fortlaufend die Nummern 4, 5, ...
Die aktuelle Byte-Position kannst Du nach dem Öffnen der Datei mit ftell herausfinden:

Code:
fid = fopen(measfile,'r');
position = ftell(fid)
hdr_len = fread(fid, 1, 'uint32');      % 4 bytes
position = ftell(fid)


Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
dani1632
Themenstarter

Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 65
Anmeldedatum: 28.02.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.03.2009, 13:35     Titel:
  Antworten mit Zitat      
Super!
DANKE SEHR!!!

Lg
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.