<?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[Verständnisfragen zu fgets() und sscanf()]]></title><description><![CDATA[<p>Hi, ich bin im Moment dabei das NeHe OpenGL Tutorial durchzuarbeiten und bin auf ein Codefragment gestoßen, das ich nicht verstehe.<br />
Ich poste trotz dem OpenGL-Zusammenhang hier, da die Fragen sich nicht um die API drehen.</p>
<pre><code class="language-cpp">void readstr(FILE *f,char *string)
{
	do
	{
		fgets(string, 255, f);
	} while ((string[0] == '/') || (string[0] == '\n'));
	return;
}

void SetupWorld()
{
	float x, y, z, u, v;
	int numtriangles;
	FILE *filein;
	char oneline[255];
	filein = fopen(&quot;data/world.txt&quot;, &quot;rt&quot;);				// File To Load World Data From

	readstr(filein,oneline);
	sscanf(oneline, &quot;NUMPOLLIES %d\n&quot;, &amp;numtriangles);

	sector1.triangle = new TRIANGLE[numtriangles];
	sector1.numtriangles = numtriangles;
	for (int loop = 0; loop &lt; numtriangles; loop++)
	{
		for (int vert = 0; vert &lt; 3; vert++)
		{
			readstr(filein,oneline);
			sscanf(oneline, &quot;%f %f %f %f %f&quot;, &amp;x, &amp;y, &amp;z, &amp;u, &amp;v);
			sector1.triangle[loop].vertex[vert].x = x;
			sector1.triangle[loop].vertex[vert].y = y;
			sector1.triangle[loop].vertex[vert].z = z;
			sector1.triangle[loop].vertex[vert].u = u;
			sector1.triangle[loop].vertex[vert].v = v;
		}
	}
	fclose(filein);
	return;
}
</code></pre>
<p>Bei diesem Codefragment geht es darum, dass aus einer Textdatei Daten für die 3D-Welt ausgelesen werden. Meine Fragen beziehen sich nun auf:</p>
<p>Zeile 6: Was bewirkt diese Abbruchsbedingung?</p>
<p>Zeilen 27/28: Woher weiß das Programm welche Zeile aus der Textdatei gelesen werden muss? Bzw. wodurch springt die Zeile weiter? Es gibt viele Zeilen im Format &quot;%f %f %f %f %f&quot; um eben die Vertices zu bestimmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/190113/verständnisfragen-zu-fgets-und-sscanf</link><generator>RSS for Node</generator><lastBuildDate>Fri, 25 Sep 2026 12:56:48 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/190113.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 19 Aug 2007 17:48:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Verständnisfragen zu fgets() und sscanf() on Sun, 19 Aug 2007 17:48:50 GMT]]></title><description><![CDATA[<p>Hi, ich bin im Moment dabei das NeHe OpenGL Tutorial durchzuarbeiten und bin auf ein Codefragment gestoßen, das ich nicht verstehe.<br />
Ich poste trotz dem OpenGL-Zusammenhang hier, da die Fragen sich nicht um die API drehen.</p>
<pre><code class="language-cpp">void readstr(FILE *f,char *string)
{
	do
	{
		fgets(string, 255, f);
	} while ((string[0] == '/') || (string[0] == '\n'));
	return;
}

void SetupWorld()
{
	float x, y, z, u, v;
	int numtriangles;
	FILE *filein;
	char oneline[255];
	filein = fopen(&quot;data/world.txt&quot;, &quot;rt&quot;);				// File To Load World Data From

	readstr(filein,oneline);
	sscanf(oneline, &quot;NUMPOLLIES %d\n&quot;, &amp;numtriangles);

	sector1.triangle = new TRIANGLE[numtriangles];
	sector1.numtriangles = numtriangles;
	for (int loop = 0; loop &lt; numtriangles; loop++)
	{
		for (int vert = 0; vert &lt; 3; vert++)
		{
			readstr(filein,oneline);
			sscanf(oneline, &quot;%f %f %f %f %f&quot;, &amp;x, &amp;y, &amp;z, &amp;u, &amp;v);
			sector1.triangle[loop].vertex[vert].x = x;
			sector1.triangle[loop].vertex[vert].y = y;
			sector1.triangle[loop].vertex[vert].z = z;
			sector1.triangle[loop].vertex[vert].u = u;
			sector1.triangle[loop].vertex[vert].v = v;
		}
	}
	fclose(filein);
	return;
}
</code></pre>
<p>Bei diesem Codefragment geht es darum, dass aus einer Textdatei Daten für die 3D-Welt ausgelesen werden. Meine Fragen beziehen sich nun auf:</p>
<p>Zeile 6: Was bewirkt diese Abbruchsbedingung?</p>
<p>Zeilen 27/28: Woher weiß das Programm welche Zeile aus der Textdatei gelesen werden muss? Bzw. wodurch springt die Zeile weiter? Es gibt viele Zeilen im Format &quot;%f %f %f %f %f&quot; um eben die Vertices zu bestimmen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1347702</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1347702</guid><dc:creator><![CDATA[Patriot]]></dc:creator><pubDate>Sun, 19 Aug 2007 17:48:50 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu fgets() und sscanf() on Sun, 19 Aug 2007 18:06:20 GMT]]></title><description><![CDATA[<p>Zeile 6 sorgt dafür, das so lange gelesen wird, wie die Zeile mit einem \n oder / beginnt<br />
Zeile 27/28 der liest doch bei jedem Durchgang eine neue Zeile und scant die.</p>
<p>PS<br />
a) orientiere dich bitte nicht so sehr an den NeHe Beispielen, die sind schrecklich!<br />
b) verwendet man in C++ ohnehin eher std::fstream anstelle die alten C Funktionen für I/O.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1347711</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1347711</guid><dc:creator><![CDATA[rüdiger]]></dc:creator><pubDate>Sun, 19 Aug 2007 18:06:20 GMT</pubDate></item><item><title><![CDATA[Reply to Verständnisfragen zu fgets() und sscanf() on Sun, 19 Aug 2007 19:04:21 GMT]]></title><description><![CDATA[<p>Danke für die schnelle Antwort, hab mich jetzt nochmal damit beschäftigt und verstehe das Codefragment soweit.</p>
<p>zu a) Danke für den Tipp, hast du andere Vorschläge zu Lernmaterial? Ist <a href="http://www.amazon.com/OpenGL-Programming-Guide-Official-Learning/dp/0321481003/ref=pd_bbs_sr_3/103-7001143-4507817?ie=UTF8&amp;s=books&amp;qid=1187550091&amp;sr=1-3" rel="nofollow">http://www.amazon.com/OpenGL-Programming-Guide-Official-Learning/dp/0321481003/ref=pd_bbs_sr_3/103-7001143-4507817?ie=UTF8&amp;s=books&amp;qid=1187550091&amp;sr=1-3</a> empfehlenswert?</p>
<p>zu b) Ja wie gesagt arbeite halt das Tutorial durch, aber werd mich in Zukunft daran halten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1347743</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1347743</guid><dc:creator><![CDATA[Patriot]]></dc:creator><pubDate>Sun, 19 Aug 2007 19:04:21 GMT</pubDate></item></channel></rss>