<?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[File* f Function als Argument übergeben.]]></title><description><![CDATA[<p>Hallo,</p>
<pre><code class="language-cpp">void ReadFromFile(){ 

		if( (err  = fopen_s( &amp;f, filePath, &quot;rb&quot; )) !=0 )
		  exit(1);

		fseek(f,0,SEEK_END);
		int len = ftell(f);

		if(f){
		  fclose(f);
		}
	}
</code></pre>
<p>Das wird ca. 400 mal aufgerufen.<br />
Diesen Code muß ich umschreiben. Ich denke der ist ineffizient. Ich würde gerne FILE* als Funktionsargument einsetzen und somit die Datei nur einmal zu öffnen.<br />
Wie fange ich da los?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/268390/file-f-function-als-argument-übergeben</link><generator>RSS for Node</generator><lastBuildDate>Tue, 01 Sep 2026 21:04:08 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/268390.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 08 Jun 2010 15:22:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to File* f Function als Argument übergeben. on Tue, 08 Jun 2010 15:22:45 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<pre><code class="language-cpp">void ReadFromFile(){ 

		if( (err  = fopen_s( &amp;f, filePath, &quot;rb&quot; )) !=0 )
		  exit(1);

		fseek(f,0,SEEK_END);
		int len = ftell(f);

		if(f){
		  fclose(f);
		}
	}
</code></pre>
<p>Das wird ca. 400 mal aufgerufen.<br />
Diesen Code muß ich umschreiben. Ich denke der ist ineffizient. Ich würde gerne FILE* als Funktionsargument einsetzen und somit die Datei nur einmal zu öffnen.<br />
Wie fange ich da los?</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1908975</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1908975</guid><dc:creator><![CDATA[FrankTheFox]]></dc:creator><pubDate>Tue, 08 Jun 2010 15:22:45 GMT</pubDate></item><item><title><![CDATA[Reply to File* f Function als Argument übergeben. on Tue, 08 Jun 2010 15:24:20 GMT]]></title><description><![CDATA[<p>Ein Anfang wäre es einmal ein Funktionsargument anzugeben?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1908979</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1908979</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 08 Jun 2010 15:24:20 GMT</pubDate></item><item><title><![CDATA[Reply to File* f Function als Argument übergeben. on Tue, 08 Jun 2010 15:30:16 GMT]]></title><description><![CDATA[<p>Die Funktion (die erstmal in C und nicht C++ geschrieben ist) hat überhaupt keinen Sinn. Du willst also 400 mal ineffizienten Nonsens in 400 mal schnellen Nonsens umwandeln?</p>
<pre><code class="language-cpp">void ReadFromFile(FILE* f)
{
  if (!f) exit(1);
}
</code></pre>
<p>Du musst schonmal ein bischen genauer erklären was du willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1908982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1908982</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Tue, 08 Jun 2010 15:30:16 GMT</pubDate></item><item><title><![CDATA[Reply to File* f Function als Argument übergeben. on Tue, 08 Jun 2010 15:42:52 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ja ich hette Zeilen dazwischen heraus genommen, die Dann mit den Daten der Datei was machen</p>
<p>also nachdem geöffnet und wird dann...</p>
<pre><code class="language-cpp">fseek(f,0,SEEK_END);
int len = ftell(f)/2;		
frame = len/(height*width);
</code></pre>
<p>Frames werden aus einer Datei gelesen. Das geschieht allerdings für jedes Frame.<br />
Ich hatte mir nur gedacht, das &quot;fopen_s&quot; &quot;fclose(f)&quot; 400 mal aufgerufen ist nicht gut, also die Datei in der Elternklasse schon mal öffnen und dann in der Verarbeitenden Klasse dann lesen.</p>
<p>Gruß<br />
Frank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1908987</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1908987</guid><dc:creator><![CDATA[FrankTheFox]]></dc:creator><pubDate>Tue, 08 Jun 2010 15:42:52 GMT</pubDate></item><item><title><![CDATA[Reply to File* f Function als Argument übergeben. on Tue, 08 Jun 2010 15:48:17 GMT]]></title><description><![CDATA[<p>Also du willst so etwas machen ?</p>
<pre><code class="language-cpp">FILE * f = OpenFile();
for (400 mal){
 ReadFromFile(f);
}
</code></pre>
<p>400 mal die selbe Datei zu öffnen um darin zu lesen ist natürlich unpraktisch.<br />
Aber was ist jetzt die Frage?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1908989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1908989</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Tue, 08 Jun 2010 15:48:17 GMT</pubDate></item><item><title><![CDATA[Reply to File* f Function als Argument übergeben. on Tue, 08 Jun 2010 16:23:46 GMT]]></title><description><![CDATA[<p>Wenn du aus jeder Zeile was auslesen willst solltest du in c++ Vectoren benutzen oder array (array hab ich noch nie benutzt und weiß nicht ob das geht).</p>
<p>Wenn du mit einer funktion dateien öffnen willst dann mach doch:</p>
<pre><code class="language-cpp">void lesen(const char *datei)
{
FILE * f;

f = open(datei, &quot;r&quot;);
}
</code></pre>
<p>Ich weiß nicht ob das funktioniert hab auch nur hin und wieder mal so programmiert da ich die c++ Variante benutze zum auslesen von Dateien.</p>
<p>Wenn ich was falsch hab verbessert mich bitte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1909019</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1909019</guid><dc:creator><![CDATA[CCodex]]></dc:creator><pubDate>Tue, 08 Jun 2010 16:23:46 GMT</pubDate></item><item><title><![CDATA[Reply to File* f Function als Argument übergeben. on Tue, 08 Jun 2010 18:15:37 GMT]]></title><description><![CDATA[<p>C:</p>
<pre><code class="language-cpp">void read_from_file(FILE* f) {
  // whatever ...
}

// anywhere in your application ...
int i;
FILE* f;

f = fopen(filename, &quot;rb&quot;);
if (!f)
  // file could not be opened ...

for (i = 0; i &lt; ...; ++i)
  read_from_file(f);

fclose(f);
</code></pre>
<p>Da wir hier aber im C++-Unterforum sind:</p>
<pre><code class="language-cpp">void read_from_file(std::ifstream&amp; f) {
  // whatever ...
}

// anywhere in your application ...
std::ifstream f(filename);
if (!f)  // the same: if (!f.is_open())
  // file could not be opened ...

for (int i = 0; i &lt; ...; ++i)
  read_from_file(f);

// f will be closed and destroyed automatically ...
</code></pre>
<p>Ich denke, egal ob die C-Variante oder C++, es ist reine Geschmackssache, oder Überzeugung.</p>
<p>Gut Schuß<br />
VuuRWerK <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1909107</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1909107</guid><dc:creator><![CDATA[VuuRWerK]]></dc:creator><pubDate>Tue, 08 Jun 2010 18:15:37 GMT</pubDate></item><item><title><![CDATA[Reply to File* f Function als Argument übergeben. on Tue, 08 Jun 2010 20:04:40 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>danke für die Antworten! Machmal ist es gut Denkanstösse zu bekommen.<br />
Wenn ich könnte würde ich die ganze Anwendung neu schreibne, aber ich soll nur ein paar Funktionen auf Sinn prüfen.</p>
<p>Ich hatte eigentlich eine C++ Variante gesucht. Aber mein Hauptanliegen ist (war)<br />
die fopen_s &quot;einmal&quot; irgendwo zu nutzen und dann nur noch lesend (schreibend) auf die Dateien zuzugreifen.</p>
<p>Gruß<br />
Frank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1909189</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1909189</guid><dc:creator><![CDATA[FrankTheFox]]></dc:creator><pubDate>Tue, 08 Jun 2010 20:04:40 GMT</pubDate></item></channel></rss>