<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[fread und filepointer]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>ich habe eine .dat datei, die ich einlesen moechte. Die Datei ist so aufgebaut, dass ich zuerst einen Integer in der Datei stehen habe der mir sagt wieviele Punkte in der Datei stehen. Danach kommen Punkte(3 Dimensionen) und Normalen (nochmal 3 Dimensionen, daher N*6). Danach wiederum kommt eine Integerzahl, die mir sagt wieviele faces ich in der Datei habe und es folgen die Faces.<br />
So, das Problem ist jetzt dass ich zwar die Punkte und Normalen einlesen kann, nicht aber die Faces. Und ich weiss nicht wieso. Liegt das vielleicht daran dass der Filepointer schon weiter ist als ich denke?</p>
<p>Hier mal Programmcode:</p>
<pre><code class="language-cpp">FILE * fp = fopen(cName,&quot;rb&quot;);
	if (!fp)
	{
		printf(&quot;Could not open file&quot;);
		exit(1);
	}

	int N;
	int M;

	fread(&amp;N,1,1,fp); //lese Anzahl der Punkte ein
	fseek(fp,0,SEEK_SET);
	int count = fread(&amp;N,sizeof(int),1,fp);
	printf(&quot;%i %i %i %i\n&quot;,N,feof(fp),ftell(fp),count);
	float * buf = new float[N*6]; //reserviere Speicher fuer 3d Punkte und ihre Normalen
	count = fread(buf,sizeof(float),N*6,fp);
	printf(&quot;%i %i %i %i %i\n&quot;,N*6*sizeof(float),count,ferror(fp),feof(fp),ftell(fp)); // &lt;--- bis hierher funktioniert alles

	fread(&amp;M,1,1,fp); // &lt;---- aber schon dieser Aufruf hier liefert Mist,
 //da muesste eigentlich die Anzahl Faces drin stehen, es steht aber eine Zahl mit ueber einer Million drin
 //(die Anzahl Faces sollte bei ca. 130.000 liegen). 
	int count1 = fread(&amp;M,sizeof(int),1,fp);
	printf(&quot;%i %i %i %i\n&quot;,M,feof(fp),ftell(fp),count1);
	int * buf1 = new int[M*3];
	count1 = fread(buf1,sizeof(int),M*3,fp);
	printf(&quot;%i %i %i %i %i\n&quot;,M*3*sizeof(int),count1,ferror(fp),feof(fp),ftell(fp));  //ferror liefert einen Fehler
</code></pre>
<p>Vielleicht weiss von euch jemand woran das liegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/142811/fread-und-filepointer</link><generator>RSS for Node</generator><lastBuildDate>Tue, 01 Sep 2026 22:48:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/142811.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 03 Apr 2006 08:55:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to fread und filepointer on Mon, 03 Apr 2006 08:55:56 GMT]]></title><description><![CDATA[<p>Hallo zusammen</p>
<p>ich habe eine .dat datei, die ich einlesen moechte. Die Datei ist so aufgebaut, dass ich zuerst einen Integer in der Datei stehen habe der mir sagt wieviele Punkte in der Datei stehen. Danach kommen Punkte(3 Dimensionen) und Normalen (nochmal 3 Dimensionen, daher N*6). Danach wiederum kommt eine Integerzahl, die mir sagt wieviele faces ich in der Datei habe und es folgen die Faces.<br />
So, das Problem ist jetzt dass ich zwar die Punkte und Normalen einlesen kann, nicht aber die Faces. Und ich weiss nicht wieso. Liegt das vielleicht daran dass der Filepointer schon weiter ist als ich denke?</p>
<p>Hier mal Programmcode:</p>
<pre><code class="language-cpp">FILE * fp = fopen(cName,&quot;rb&quot;);
	if (!fp)
	{
		printf(&quot;Could not open file&quot;);
		exit(1);
	}

	int N;
	int M;

	fread(&amp;N,1,1,fp); //lese Anzahl der Punkte ein
	fseek(fp,0,SEEK_SET);
	int count = fread(&amp;N,sizeof(int),1,fp);
	printf(&quot;%i %i %i %i\n&quot;,N,feof(fp),ftell(fp),count);
	float * buf = new float[N*6]; //reserviere Speicher fuer 3d Punkte und ihre Normalen
	count = fread(buf,sizeof(float),N*6,fp);
	printf(&quot;%i %i %i %i %i\n&quot;,N*6*sizeof(float),count,ferror(fp),feof(fp),ftell(fp)); // &lt;--- bis hierher funktioniert alles

	fread(&amp;M,1,1,fp); // &lt;---- aber schon dieser Aufruf hier liefert Mist,
 //da muesste eigentlich die Anzahl Faces drin stehen, es steht aber eine Zahl mit ueber einer Million drin
 //(die Anzahl Faces sollte bei ca. 130.000 liegen). 
	int count1 = fread(&amp;M,sizeof(int),1,fp);
	printf(&quot;%i %i %i %i\n&quot;,M,feof(fp),ftell(fp),count1);
	int * buf1 = new int[M*3];
	count1 = fread(buf1,sizeof(int),M*3,fp);
	printf(&quot;%i %i %i %i %i\n&quot;,M*3*sizeof(int),count1,ferror(fp),feof(fp),ftell(fp));  //ferror liefert einen Fehler
</code></pre>
<p>Vielleicht weiss von euch jemand woran das liegt?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1029536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1029536</guid><dc:creator><![CDATA[samo]]></dc:creator><pubDate>Mon, 03 Apr 2006 08:55:56 GMT</pubDate></item><item><title><![CDATA[Reply to fread und filepointer on Mon, 03 Apr 2006 09:04:47 GMT]]></title><description><![CDATA[<p>In welcher Form stehen denn deine Daten in dem File? (sprich: stehen dort lesbare Zahlen? oder hast du in der Datei eine binäre Darstellung? Im ersten Fall solltest du eher fscanf() verwenden als fread())</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1029541</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1029541</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 03 Apr 2006 09:04:47 GMT</pubDate></item><item><title><![CDATA[Reply to fread und filepointer on Mon, 03 Apr 2006 09:26:04 GMT]]></title><description><![CDATA[<p>Es ist eine binaere Datei.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1029548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1029548</guid><dc:creator><![CDATA[samo]]></dc:creator><pubDate>Mon, 03 Apr 2006 09:26:04 GMT</pubDate></item><item><title><![CDATA[Reply to fread und filepointer on Mon, 03 Apr 2006 09:36:47 GMT]]></title><description><![CDATA[<p>Vermutlich hast du die falschen Parameter an fread() gegeben - du liest ein Byte ein und schreibst es in einen Teil deiner int-Variablen (und int ist ein ganzes Stück größer). Versuch's mal mit folgendem Aufruf:</p>
<pre><code class="language-cpp">fread(&amp;N,sizeof(int),1,fp);
</code></pre>
<p>(PS: Noch besser wäre es, wenn du auf fstreams umsteigst)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1029552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1029552</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 03 Apr 2006 09:36:47 GMT</pubDate></item><item><title><![CDATA[Reply to fread und filepointer on Mon, 03 Apr 2006 10:14:16 GMT]]></title><description><![CDATA[<p>Dankeschoen! Jetzt passts!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1029562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1029562</guid><dc:creator><![CDATA[samo]]></dc:creator><pubDate>Mon, 03 Apr 2006 10:14:16 GMT</pubDate></item></channel></rss>