<?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[Problem mit formatierter Array-Ausgabe]]></title><description><![CDATA[<p>ich versuch ein verdammtes programm um nur eine datei auszulesen um formatiert links den wert von jedem byte und rechts das entsprechende ascii zeichen auszugeben, aber nach stundenlangem probieren bleibt immernoch der fehler dass ganz am anfang einfach ein leerzeichen ausgegeben wird. hier der code:</p>
<pre><code class="language-cpp">void printBuffer(CHAR* buffer,int size, int m)
{
	unsigned int cnt=0;	//buchstaben in der zeile
	unsigned int n_zfln=0;
	cout&lt;&lt;&quot;************** printing buffer with size of &quot;&lt;&lt;size&lt;&lt;&quot;*******************&quot;&lt;&lt;endl;
	for(int i=0; i&lt;size;i++)
		{

			unsigned int tmpznln=0, n=0;
			cout&lt;&lt;(int)buffer[i]&lt;&lt;&quot; &quot;;
			for(n=0, tmpznln=buffer[i]; tmpznln; tmpznln/=10, n++);//anzahl der zeichen von den char werten, +1 weil die immer durch ein leerzeichen getrennt sind
			n_zfln+=n+1;

			cnt++;
			if(buffer[i]=='\n' || cnt==10)
			{	
		for(int j=0; j&lt;45-n_zfln;j++)// der platz zwischen den char werten und den zeichen wird mit leerzeichen aufgefüllt
					cout&lt;&lt;' ';		

				for(int h=cnt; h&gt;0; h--)
				{
					if(buffer[i-h]!='\n')
					cout&lt;&lt;buffer[i-h];
				}
				cnt=0;
				n_zfln=0;
				cout&lt;&lt;endl;
			}
		}
	cout&lt;&lt;endl&lt;&lt;&quot;**************************************************************&quot;&lt;&lt;endl;
}
</code></pre>
<p>in der for schleife wo die ascii zeichen ausgegeben werden könnte das problem liegen, aber ich weis nicht genau wo.<br />
wo liegt also das problem hier?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/309345/problem-mit-formatierter-array-ausgabe</link><generator>RSS for Node</generator><lastBuildDate>Wed, 05 Aug 2026 10:49:10 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/309345.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 20 Oct 2012 16:26:19 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit formatierter Array-Ausgabe on Sat, 20 Oct 2012 16:26:19 GMT]]></title><description><![CDATA[<p>ich versuch ein verdammtes programm um nur eine datei auszulesen um formatiert links den wert von jedem byte und rechts das entsprechende ascii zeichen auszugeben, aber nach stundenlangem probieren bleibt immernoch der fehler dass ganz am anfang einfach ein leerzeichen ausgegeben wird. hier der code:</p>
<pre><code class="language-cpp">void printBuffer(CHAR* buffer,int size, int m)
{
	unsigned int cnt=0;	//buchstaben in der zeile
	unsigned int n_zfln=0;
	cout&lt;&lt;&quot;************** printing buffer with size of &quot;&lt;&lt;size&lt;&lt;&quot;*******************&quot;&lt;&lt;endl;
	for(int i=0; i&lt;size;i++)
		{

			unsigned int tmpznln=0, n=0;
			cout&lt;&lt;(int)buffer[i]&lt;&lt;&quot; &quot;;
			for(n=0, tmpznln=buffer[i]; tmpznln; tmpznln/=10, n++);//anzahl der zeichen von den char werten, +1 weil die immer durch ein leerzeichen getrennt sind
			n_zfln+=n+1;

			cnt++;
			if(buffer[i]=='\n' || cnt==10)
			{	
		for(int j=0; j&lt;45-n_zfln;j++)// der platz zwischen den char werten und den zeichen wird mit leerzeichen aufgefüllt
					cout&lt;&lt;' ';		

				for(int h=cnt; h&gt;0; h--)
				{
					if(buffer[i-h]!='\n')
					cout&lt;&lt;buffer[i-h];
				}
				cnt=0;
				n_zfln=0;
				cout&lt;&lt;endl;
			}
		}
	cout&lt;&lt;endl&lt;&lt;&quot;**************************************************************&quot;&lt;&lt;endl;
}
</code></pre>
<p>in der for schleife wo die ascii zeichen ausgegeben werden könnte das problem liegen, aber ich weis nicht genau wo.<br />
wo liegt also das problem hier?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2262345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2262345</guid><dc:creator><![CDATA[Francis123]]></dc:creator><pubDate>Sat, 20 Oct 2012 16:26:19 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit formatierter Array-Ausgabe on Sat, 20 Oct 2012 17:03:05 GMT]]></title><description><![CDATA[<p>Keine Ahnung was du da tust, aber wenn du zu jedem Zeichen einer Datei den ASCII-Wert ausgeben möchtest, gibt es bessere Wege. Da solltest du nochmals von vorne Anfangen, damit du dabei auch was gescheides lernst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2262357</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2262357</guid><dc:creator><![CDATA[out]]></dc:creator><pubDate>Sat, 20 Oct 2012 17:03:05 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit formatierter Array-Ausgabe on Sat, 20 Oct 2012 17:10:18 GMT]]></title><description><![CDATA[<p>keine ahnung wovon zu da sprichst, womit soll ich von vorne anfangen? und welchen anderen weg für ausgabe sollte es da geben? teste doch das programm und dann sieh was ich da tue.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2262359</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2262359</guid><dc:creator><![CDATA[Francis123]]></dc:creator><pubDate>Sat, 20 Oct 2012 17:10:18 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit formatierter Array-Ausgabe on Sat, 20 Oct 2012 17:34:51 GMT]]></title><description><![CDATA[<p>Meinst du sowas?</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;

int main()
{
    using namespace std;
    ifstream datei(&quot;datei.txt&quot;);
    if(!datei.is_open())
    {
        cout &lt;&lt; &quot;Konnte Datei nicht oeffnen!\n&quot;;
        return 0;
    }
    for(char ch; datei &gt;&gt; ch; cout &lt;&lt; int(ch) &lt;&lt; ' ' &lt;&lt; ch &lt;&lt; '\n');
}
</code></pre>
<p>Du sprichst aber ganz schön wirr. Vielleicht lieg ich auch voll daneben..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2262363</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2262363</guid><dc:creator><![CDATA[Incocnito]]></dc:creator><pubDate>Sat, 20 Oct 2012 17:34:51 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit formatierter Array-Ausgabe on Sat, 20 Oct 2012 17:56:45 GMT]]></title><description><![CDATA[<p>nein, das programm soll immer 10 zeichen (oder weniger wenn vorher ein zeilenumbruch kam) einlesen und dann diese 10 zeichen links als ints ausgeben und rechts als text, oder umgekehrt. dazwischen soll immer der gleiche abstand sein, egal wie lang die zeile war. das tut der code den ich gepostet hab auch, nur wird ganz am anfang jeder ausgabe ein zusätzliches leerzeichen ausgegeben, keine ahnung wieso.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2262367</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2262367</guid><dc:creator><![CDATA[Francis123]]></dc:creator><pubDate>Sat, 20 Oct 2012 17:56:45 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit formatierter Array-Ausgabe on Sat, 20 Oct 2012 22:43:35 GMT]]></title><description><![CDATA[<p>Hallo Nikolai,</p>
<p>Die Ausgabe der Zeichen am Ende enthält einen Zählfehler. In Zeile 20 muss es heißen:</p>
<pre><code class="language-cpp">for(int h=cnt-1; h&gt;=0; h--)
</code></pre>
<p>Statt aufwendig die Länge einer einzelnen Integer-Zahl zu bestimmen und mit zuzählen, würde ich Dir den Manipulatior <a href="http://www.cplusplus.com/reference/iostream/manipulators/setw/" rel="nofollow">std::setw</a> empfehlen. Der erfordert ein #include &lt;iomanip&gt;.</p>
<p>Das vereinfacht Dein Programm signifikant:</p>
<pre><code class="language-cpp">void printBuffer(CHAR* buffer,int size, int m)
{
    unsigned int cnt=0;    //buchstaben in der zeile
    unsigned int n_zfln=0;
    cout&lt;&lt;&quot;************** printing buffer with size of &quot;&lt;&lt;size&lt;&lt;&quot;*******************&quot;&lt;&lt;endl;
    for(int i=0; i&lt;size;i++)
    {
        cout&lt;&lt; setw(3) &lt;&lt;(int)buffer[i]&lt;&lt;&quot; &quot;; // hier dafür sorgen, dass die Zahl immer 3 Zeichen 'breit' ist
        cnt++;
        if(buffer[i]=='\n' || cnt==10)
        {   
            for( int cnt2 = cnt; cnt2 &lt; 10; ++cnt2 ) // falls weniger als 10 Zahlen ausgegeben wurden, Lücke füllen
                cout &lt;&lt; &quot;    &quot;; // setw(3) + &quot; &quot;
            cout&lt;&lt;' ';       

            for(int h=cnt-1; h&gt;=0; h--)
            {
                if(buffer[i-h]!='\n')
                    cout&lt;&lt;buffer[i-h];
            }
            cnt=0;
            n_zfln=0;
            cout&lt;&lt;endl;
        }
    }
    cout&lt;&lt;endl&lt;&lt;&quot;**************************************************************&quot;&lt;&lt;endl;
}
</code></pre>
<p>Der Algorithmus enthält noch den Fehler, dass in der letzten Zeile die Ausgabe der Buchstaben fehlt, wenn sie nicht mit '\n' endet oder genau 10 Zeichen enthält.<br />
Weiter würde ich Dir empfehlen in Zeile 22 statt der Prüfung auf '\n' auf <a href="http://www.cplusplus.com/reference/clibrary/cctype/isprint/" rel="nofollow">isprint</a> zu checken. Und wenn das Zeichen nicht druckbar ist, einen Punkt auszugeben.</p>
<p>Gruß<br />
Werner</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2262401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2262401</guid><dc:creator><![CDATA[Werner Salomon]]></dc:creator><pubDate>Sat, 20 Oct 2012 22:43:35 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit formatierter Array-Ausgabe on Sun, 21 Oct 2012 15:19:10 GMT]]></title><description><![CDATA[<p>ich versteh kaum wieso das alles nicht richtig funktioniert.<br />
erstmal wird überhaupt nichts ausgegeben wenn ich nach !isprint prüfe, dann weis ich nicht wie ich die letzte zeile noch ausgeben kann. wenn ich bei dem if statement noch ein || i==size-1 hinzufüge wird das letzte zeichen nicht ausgegeben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2262523</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2262523</guid><dc:creator><![CDATA[Francis123]]></dc:creator><pubDate>Sun, 21 Oct 2012 15:19:10 GMT</pubDate></item></channel></rss>