<?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[2D-Array in TXT schreiben]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich lerne gerade C++ und stehe nun vor einem Problem, dass ich irgendwie nicht gelöst bekomme. Leider habe ich auch nicht wirklich das passende über Google oder hier im Forum gefunden...</p>
<p>Also, es geht um folgendes: Ich habe ein 2-dimensionales Array, dass ich jetzt in eine Txt-Datei ausgeben möchte. Das Trennzeichen ist eine Raute &quot;#&quot;.</p>
<p>Mein Code sieht bisher so aus:</p>
<pre><code class="language-cpp">// Schreibt Array wieder in TXT:
void array_to_csv(vector&lt;vector&lt;double&gt; &gt; array){

	long zeilen, spalten;

	FILE *file;

	// Länge Zeilen
	zeilen = array.size();
	// Länge Spalten
	spalten = array[0].size();

	file = fopen(&quot;test.txt&quot;, &quot;w&quot;);

	for(int i = 0; i &lt; zeilen; i++){
		for(int h = 0; h &lt; spalten; h++){
			printf( &quot;%g#&quot;, array[i][h] );
			fprintf( file, &quot;%g#&quot;, array[i][h] );
		}
		printf( &quot;\n&quot; );
		fprintf( file, &quot;\n&quot; );
	}
    fclose(file);
}
</code></pre>
<p>Dies funktioniert bisher aus sehr gut. Das Problem ist nur, dass das Array mitunter ziemlich groß sein kann &gt; 10.000 x 10.000. Da er die Wert aber zur Zeit auch mit in die Konsole schreibt, dauert das ganze dann sehr lange. Kann ich mir das nicht irgendwie sparen? Ich meine, die Ausgabe in die Konsole, die dabei vermutlich etwas länger dauert, muss ja nicht sein. Es soll ja nur in der Txt-Datei gespeichert werden.</p>
<p>Ich habe auch etwas von dem Befehl fputs gelesen. Dieser soll schneller sein, als der printf. Allerdings glaube ich, dass dieser nur für strings bzw. chars ist. Kann mir da jemand weiter helfen?</p>
<p>Vielen Dank schonmal!<br />
Gruß<br />
Tobi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/264551/2d-array-in-txt-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Sun, 26 Jul 2026 12:46:57 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/264551.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 09 Apr 2010 08:11:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Fri, 09 Apr 2010 08:11:31 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich lerne gerade C++ und stehe nun vor einem Problem, dass ich irgendwie nicht gelöst bekomme. Leider habe ich auch nicht wirklich das passende über Google oder hier im Forum gefunden...</p>
<p>Also, es geht um folgendes: Ich habe ein 2-dimensionales Array, dass ich jetzt in eine Txt-Datei ausgeben möchte. Das Trennzeichen ist eine Raute &quot;#&quot;.</p>
<p>Mein Code sieht bisher so aus:</p>
<pre><code class="language-cpp">// Schreibt Array wieder in TXT:
void array_to_csv(vector&lt;vector&lt;double&gt; &gt; array){

	long zeilen, spalten;

	FILE *file;

	// Länge Zeilen
	zeilen = array.size();
	// Länge Spalten
	spalten = array[0].size();

	file = fopen(&quot;test.txt&quot;, &quot;w&quot;);

	for(int i = 0; i &lt; zeilen; i++){
		for(int h = 0; h &lt; spalten; h++){
			printf( &quot;%g#&quot;, array[i][h] );
			fprintf( file, &quot;%g#&quot;, array[i][h] );
		}
		printf( &quot;\n&quot; );
		fprintf( file, &quot;\n&quot; );
	}
    fclose(file);
}
</code></pre>
<p>Dies funktioniert bisher aus sehr gut. Das Problem ist nur, dass das Array mitunter ziemlich groß sein kann &gt; 10.000 x 10.000. Da er die Wert aber zur Zeit auch mit in die Konsole schreibt, dauert das ganze dann sehr lange. Kann ich mir das nicht irgendwie sparen? Ich meine, die Ausgabe in die Konsole, die dabei vermutlich etwas länger dauert, muss ja nicht sein. Es soll ja nur in der Txt-Datei gespeichert werden.</p>
<p>Ich habe auch etwas von dem Befehl fputs gelesen. Dieser soll schneller sein, als der printf. Allerdings glaube ich, dass dieser nur für strings bzw. chars ist. Kann mir da jemand weiter helfen?</p>
<p>Vielen Dank schonmal!<br />
Gruß<br />
Tobi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879853</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879853</guid><dc:creator><![CDATA[ootobbyoo]]></dc:creator><pubDate>Fri, 09 Apr 2010 08:11:31 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Fri, 09 Apr 2010 08:18:42 GMT]]></title><description><![CDATA[<p>Lass printf() doch einfach weg, wenn du die Konsolenausgabe nicht willst ... mehr tut die Funktion nämlich nicht.</p>
<p>EDIT:<br />
Ganz nebenbei: Da wir hier im C++ Forum sind, darf ich erwähnen, dass es da auch noch die fstream Klassen gibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879857</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879857</guid><dc:creator><![CDATA[FrEEzE2046]]></dc:creator><pubDate>Fri, 09 Apr 2010 08:18:42 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Fri, 09 Apr 2010 08:32:06 GMT]]></title><description><![CDATA[<p>mh, das war ja einfach</p>
<p>dann mal vielen Dank!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879862</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879862</guid><dc:creator><![CDATA[ootobbyoo]]></dc:creator><pubDate>Fri, 09 Apr 2010 08:32:06 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Fri, 09 Apr 2010 09:14:54 GMT]]></title><description><![CDATA[<p>Du könntest den Schleifenkörper auch folgendermassen umbauen, um alle möglichen Arrayformen abzudecken:</p>
<pre><code class="language-cpp">// Iterator über alle inneren Vektoren (Zeilen)
for( vector&lt;vector&lt;double&gt; &gt;::const_iterator outer = array.begin(); outer != array.end(); ++outer )
{
   // Iterator über alle Elemente eines inneren Vektors (Spalten)
   for( vector&lt;double&gt;::const_iterator inner = outer-&gt;begin(); it != outer-&gt;end(); ++inner )
   {
      if( inner != outer-&gt;begin() )
      {
         // ab 2. Element Trennzeichen ausgeben
         cout &lt;&lt; &quot;;&quot;;
      }
      // Element ausgeben
      cout &lt;&lt; *inner;
   }
   // neue Zeile
   cout &lt;&lt; endl;
}
</code></pre>
<p>Wenn dein Array 10Kx10K Elemente haben kann solltest du es per const Referenz übergeben. Als Referenz, um unnötiges Kopieren zu vermeiden und const, da du während der Ausgabe nur lesend darauf zugreifst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879877</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Fri, 09 Apr 2010 09:14:54 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Fri, 09 Apr 2010 09:29:57 GMT]]></title><description><![CDATA[<p>Ich habe ihn so verstanden, dass sein einziges Problem ist, dass er keine Konsolenausgabe will ... dann sollte man sie einfach weglassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879886</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879886</guid><dc:creator><![CDATA[FrEEzE2046]]></dc:creator><pubDate>Fri, 09 Apr 2010 09:29:57 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Fri, 09 Apr 2010 09:55:25 GMT]]></title><description><![CDATA[<p>FrEEzE2046 schrieb:</p>
<blockquote>
<p>Ich habe ihn so verstanden, dass sein einziges Problem ist, dass er keine Konsolenausgabe will ... dann sollte man sie einfach weglassen.</p>
</blockquote>
<p>Ja ich weiss, war zu faul fstream statt cout zu benutzen, waren mir dann doch zwei Zeilen Code zu viel.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879901</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879901</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Fri, 09 Apr 2010 09:55:25 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Fri, 09 Apr 2010 10:00:08 GMT]]></title><description><![CDATA[<p>ok, also mein code funktioniert nun auch wunderbar.</p>
<p>hat der code von DocShoe irgendwelche vorteile?</p>
<p>habe noch nicht für 10000 elemente getestet, aber hätte der evt. gewindigkeitsvorteile?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879908</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879908</guid><dc:creator><![CDATA[ootobbyoo]]></dc:creator><pubDate>Fri, 09 Apr 2010 10:00:08 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Fri, 09 Apr 2010 10:10:13 GMT]]></title><description><![CDATA[<p>ootobbyoo schrieb:</p>
<blockquote>
<p>ok, also mein code funktioniert nun auch wunderbar.</p>
<p>hat der code von DocShoe irgendwelche vorteile?</p>
<p>habe noch nicht für 10000 elemente getestet, aber hätte der evt. gewindigkeitsvorteile?</p>
</blockquote>
<p>Der Code von DocShoe ist viel allgemeiner, ohne wesentliche Nachteile durch die Abstraktion zu haben. Er ermöglicht es nämlich auch &quot;nicht-rechteckige&quot; Arrays auszugeben, was ein durchaus nicht ungewöhnlicher Anwendungsfall ist. Noch allgemeiner wäre es natürlich ein Template anstatt einer spezialisierten Funktion für vector&lt;double&gt; zu nehmen, aber wir wollen mal nicht gleich übertreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1879917</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1879917</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 09 Apr 2010 10:10:13 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Tue, 13 Apr 2010 08:06:00 GMT]]></title><description><![CDATA[<p>also, mein code sieht nun folgendermaßen aus:</p>
<pre><code class="language-cpp">// Schreibt M_2 in TXT:
void M_2_to_csv(vector&lt;vector&lt;vector&lt;double&gt; &gt; &gt; array){

	long zeilen, spalten;

	FILE *file;

	zeilen = array.size(); // Länge Zeilen
	spalten = array[0].size(); // Länge Spalten

	file = fopen(&quot;M_2.txt&quot;, &quot;w&quot;);

	for(int i = 0; i &lt; zeilen -1 ; i++){  // &quot;-1&quot;, da letzte Zeile abgespalten wird
		for(int h = 0; h &lt; spalten; h++){
			if(h &lt; spalten - 1){fprintf( file, &quot;%g#&quot;, array[i][h][1] );}
		}
		fprintf( file, &quot;\n&quot; );
	}
    fclose(file);
}
</code></pre>
<p>das funktioniert auch wunderbar...</p>
<p>allerdings möchte ich nun, dass hinter den letzten wert in der zeile keine raute mehr geschrieben wird. wie ist das möglich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1881946</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1881946</guid><dc:creator><![CDATA[ootobbyoo]]></dc:creator><pubDate>Tue, 13 Apr 2010 08:06:00 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Tue, 13 Apr 2010 08:15:32 GMT]]></title><description><![CDATA[<p>Die letzte Ausgabe einfach außerhalb der Schleife machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1881953</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1881953</guid><dc:creator><![CDATA[FrEEzE2046]]></dc:creator><pubDate>Tue, 13 Apr 2010 08:15:32 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Tue, 13 Apr 2010 08:21:39 GMT]]></title><description><![CDATA[<p>das hatte ich auch schon versucht, aber dann schreibt er den letzten wert immer an die zweite stelle und allen anderen werte sind wieder weg...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1881957</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1881957</guid><dc:creator><![CDATA[ootobbyoo]]></dc:creator><pubDate>Tue, 13 Apr 2010 08:21:39 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Tue, 13 Apr 2010 08:37:44 GMT]]></title><description><![CDATA[<p>ootobbyoo schrieb:</p>
<blockquote>
<p>das hatte ich auch schon versucht, aber dann schreibt er den letzten wert immer an die zweite stelle und allen anderen werte sind wieder weg...</p>
</blockquote>
<p>Was macht er?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1881968</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1881968</guid><dc:creator><![CDATA[FrEEzE2046]]></dc:creator><pubDate>Tue, 13 Apr 2010 08:37:44 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Tue, 13 Apr 2010 08:41:43 GMT]]></title><description><![CDATA[<p>also eigentlich sollte es in der txt z.B. so aussehen:</p>
<p>2#3#4#13#0#0#0</p>
<p>es sieht dann aber so aus:</p>
<p>2#0</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1881970</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1881970</guid><dc:creator><![CDATA[ootobbyoo]]></dc:creator><pubDate>Tue, 13 Apr 2010 08:41:43 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Wed, 14 Apr 2010 07:14:09 GMT]]></title><description><![CDATA[<p>hat niemand eine idee?</p>
<p>hier nochmal der ursprüngliche code:</p>
<pre><code class="language-cpp">// Schreibt M_2 in TXT:
void M_2_to_csv(vector&lt;vector&lt;vector&lt;double&gt; &gt; &gt; array){

	long zeilen, spalten;

	FILE *file;

	zeilen = array.size(); // Länge Zeilen
	spalten = array[0].size(); // Länge Spalten

	file = fopen(&quot;M_2.txt&quot;, &quot;w&quot;);

	for(int i = 0; i &lt; zeilen -1 ; i++){  // &quot;-1&quot;, da letzte Zeile abgespalten wird
		for(int h = 0; h &lt; spalten; h++){
			fprintf( file, &quot;%g#&quot;, array[i][h][1] );
		}
		fprintf( file, &quot;\n&quot; );
	}
    fclose(file);
}
</code></pre>
<p>ich möchte nur, dass am eine der zeile keine raute steht. das kann eigentlich nicht so schwer sein...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882480</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882480</guid><dc:creator><![CDATA[ootobbyoo]]></dc:creator><pubDate>Wed, 14 Apr 2010 07:14:09 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Wed, 14 Apr 2010 07:28:03 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<pre><code class="language-cpp">for(int i = 0; i &lt; zeilen -1 ; i++){  // &quot;-1&quot;, da letzte Zeile abgespalten wird
        for(int h = 0; h &lt; spalten - 1; h++){
            fprintf( file, &quot;%g#&quot;, array[i][h][1] );
        }
        fprintf( file, &quot;%g\n&quot;, array[zeilen - 2][spalten - 1][1] );
    }
</code></pre>
<p>Wie wärs damit?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882491</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882491</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 14 Apr 2010 07:28:03 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Wed, 14 Apr 2010 07:29:30 GMT]]></title><description><![CDATA[<p>Braunstein schrieb:</p>
<blockquote>
<p>Hallo,</p>
<pre><code class="language-cpp">for(int i = 0; i &lt; zeilen -1 ; i++){  // &quot;-1&quot;, da letzte Zeile abgespalten wird
        for(int h = 0; h &lt; spalten - 1; h++){
            fprintf( file, &quot;%g#&quot;, array[i][h][1] );
        }
        fprintf( file, &quot;%g\n&quot;, array[zeilen - 2][spalten - 1][1] );
    }
</code></pre>
<p>Wie wärs damit?</p>
</blockquote>
<p>Wie wärs mit C++?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882492</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Wed, 14 Apr 2010 07:29:30 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Wed, 14 Apr 2010 07:32:58 GMT]]></title><description><![CDATA[<p>Warum sagst du mir das?<br />
Der OP wollte printf und FILE verwenden, wer bin ich denn ihn daran zu hindern? <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/1882494</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882494</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Wed, 14 Apr 2010 07:32:58 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Wed, 14 Apr 2010 07:34:37 GMT]]></title><description><![CDATA[<p>Du, bist, BRAUNSTEIN! Aber leider nicht Sparta, sonst hättest du ihn davon überzeugt, dass fprintf und FILE der absolut falsche Ansatz in C++ sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882495</guid><dc:creator><![CDATA[JanJan]]></dc:creator><pubDate>Wed, 14 Apr 2010 07:34:37 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Wed, 14 Apr 2010 08:13:46 GMT]]></title><description><![CDATA[<p>ok, danke erstmal.</p>
<p>wieso der falsche ansatz? wie mache ich es denn besser?</p>
<p>so, wie ich es geschrieben habe, läuft es sehr gut und auch schnell...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882522</guid><dc:creator><![CDATA[ootobbyoo]]></dc:creator><pubDate>Wed, 14 Apr 2010 08:13:46 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Wed, 14 Apr 2010 08:56:56 GMT]]></title><description><![CDATA[<p>Richtig wäre es die Streams zu benutzen. Sonst kannst du gleich C schreiben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882557</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Wed, 14 Apr 2010 08:56:56 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Wed, 14 Apr 2010 10:54:54 GMT]]></title><description><![CDATA[<p>ok, aber welchen vorteil bringt mir das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882644</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882644</guid><dc:creator><![CDATA[ootobbyoo]]></dc:creator><pubDate>Wed, 14 Apr 2010 10:54:54 GMT</pubDate></item><item><title><![CDATA[Reply to 2D-Array in TXT schreiben on Wed, 14 Apr 2010 14:12:36 GMT]]></title><description><![CDATA[<p>Typsicherheit und Austauschbarkeit. Ein fprintf mit einem Parameter, der nicht zum Format Identifier passt kann gerne schon mal für Unruhe sorgen.<br />
Wenn du einen iostream operator für deinen Datentyp implementierst kann der Datentyp seinen Inhalt in jeden Stream schreiben und jeden Stream lesen, der das istream/ostream Interface unterstützt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1882794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1882794</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 14 Apr 2010 14:12:36 GMT</pubDate></item></channel></rss>