<?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 beim einlesen einer binärdatei]]></title><description><![CDATA[<p>Hi Leute!</p>
<p>Also irgendwie klappt es bei mir noch nicht so richtig meine Binärdatei wieder einzulesen.</p>
<p>und zwar speichere ich folgendermaßen daten in einer neuen datei:</p>
<pre><code class="language-cpp">FILE *f	= fopen((char*)dateiname, &quot;wb&quot;);
	fwrite(&amp;spalten,1,sizeof(int),f);
	fwrite(&amp;zeilen,1,sizeof(int),f);
	for (int i=0; i &lt; (zeilen*spalten); i++)
	{
		fwrite(&amp;feld[i],1,sizeof(char),f);
	}
	fclose(f);
</code></pre>
<p>dann habe ich versucht das ganze folgendermaßen wieder einzulesen:</p>
<pre><code class="language-cpp">int dat,i=0,;
	unsigned char binptr[1];

	FILE *f	= fopen(&quot;test.txt&quot;, &quot;rb&quot;);

	while ((dat = getc(f)) != EOF)
	{
		cout &lt;&lt; dat &lt;&lt; endl;
		i++;
	}

	cout &lt;&lt; endl &lt;&lt; i;

	fclose(f);
</code></pre>
<p>aber irgendwie stimmt das ganze nicht so ganz. vorallem sind die ersten beiden zeilen, in der ja eigentlich die zeilen und spalten stehen leer. irgendwie alles komisch. zeilen und spalten sind normale int variablen. das feld ein eindimensionales array.</p>
<p>danke schonmal!</p>
<p>liebe grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/129231/problem-beim-einlesen-einer-binärdatei</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 04:55:26 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/129231.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 11 Dec 2005 18:19:43 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to problem beim einlesen einer binärdatei on Sun, 11 Dec 2005 18:19:43 GMT]]></title><description><![CDATA[<p>Hi Leute!</p>
<p>Also irgendwie klappt es bei mir noch nicht so richtig meine Binärdatei wieder einzulesen.</p>
<p>und zwar speichere ich folgendermaßen daten in einer neuen datei:</p>
<pre><code class="language-cpp">FILE *f	= fopen((char*)dateiname, &quot;wb&quot;);
	fwrite(&amp;spalten,1,sizeof(int),f);
	fwrite(&amp;zeilen,1,sizeof(int),f);
	for (int i=0; i &lt; (zeilen*spalten); i++)
	{
		fwrite(&amp;feld[i],1,sizeof(char),f);
	}
	fclose(f);
</code></pre>
<p>dann habe ich versucht das ganze folgendermaßen wieder einzulesen:</p>
<pre><code class="language-cpp">int dat,i=0,;
	unsigned char binptr[1];

	FILE *f	= fopen(&quot;test.txt&quot;, &quot;rb&quot;);

	while ((dat = getc(f)) != EOF)
	{
		cout &lt;&lt; dat &lt;&lt; endl;
		i++;
	}

	cout &lt;&lt; endl &lt;&lt; i;

	fclose(f);
</code></pre>
<p>aber irgendwie stimmt das ganze nicht so ganz. vorallem sind die ersten beiden zeilen, in der ja eigentlich die zeilen und spalten stehen leer. irgendwie alles komisch. zeilen und spalten sind normale int variablen. das feld ein eindimensionales array.</p>
<p>danke schonmal!</p>
<p>liebe grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/939732</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939732</guid><dc:creator><![CDATA[ViperNeo]]></dc:creator><pubDate>Sun, 11 Dec 2005 18:19:43 GMT</pubDate></item><item><title><![CDATA[Reply to problem beim einlesen einer binärdatei on Sun, 11 Dec 2005 19:07:04 GMT]]></title><description><![CDATA[<p>mit fgetc() liest du nur ein byte ein ( fgetc() gibt zwar ein int zurück aber nur damit es EOF darstellen kann ).<br />
verwende fread()<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/939761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939761</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sun, 11 Dec 2005 19:07:04 GMT</pubDate></item><item><title><![CDATA[Reply to problem beim einlesen einer binärdatei on Sun, 11 Dec 2005 19:54:06 GMT]]></title><description><![CDATA[<p>ähm, okay <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> danke, aber wie mach ich das, könntest du mir da kurz behilflich sein? also die int werte die er mir zurück gibt stimmen. nur hab cih das gefühl es fehlt was.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/939800</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939800</guid><dc:creator><![CDATA[ViperNeo]]></dc:creator><pubDate>Sun, 11 Dec 2005 19:54:06 GMT</pubDate></item><item><title><![CDATA[Reply to problem beim einlesen einer binärdatei on Sun, 11 Dec 2005 19:57:19 GMT]]></title><description><![CDATA[<p>ViperNeo schrieb:</p>
<blockquote>
<p>ähm, okay <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /> danke, aber wie mach ich das, könntest du mir da kurz behilflich sein? also die int werte die er mir zurück gibt stimmen. nur hab cih das gefühl es fehlt was.</p>
</blockquote>
<p>Dann zeig her wie du das machst.<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/939804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939804</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sun, 11 Dec 2005 19:57:19 GMT</pubDate></item><item><title><![CDATA[Reply to problem beim einlesen einer binärdatei on Sun, 11 Dec 2005 21:03:21 GMT]]></title><description><![CDATA[<p>Das ist meine ganze Editor funktion:</p>
<pre><code class="language-cpp">int leditor(bool load=false)
{
	int x = 1, y = 1;
	char taste;
	bool ende = false;
	int zeilen = 10, spalten = 10;
	char dateiname[50];

	//ZEICHEN
	char mauer = 219;
	char leer = 0;
	char futter = 6;
	char sfutter = 6;
	//!ZEICHEN

	if (load==true)
	{
		/*char datei[50];
		cout &lt;&lt; &quot;Dateiname der zu ladenden Datei: &quot;;
		cin.getline(datei, 49);

		FILE *f	= fopen((char*)datei, &quot;r&quot;);
		//LADEVORGANG ???
		fclose(f);

		system(&quot;cls&quot;);*/
	}
	else
	{
		cout &lt;&lt; &quot;Zeilenzahl: &quot;;
		cin &gt;&gt; zeilen;
		cout &lt;&lt; &quot;Spaltenzahl: &quot;;
		cin &gt;&gt; spalten;
		cout &lt;&lt; &quot;Dateiname: &quot;;
		cin &gt;&gt; dateiname;
	}

	char *feld = new char [zeilen*spalten];

	system(&quot;cls&quot;);
	SetConsoleTitle(&quot;Ultimate PACMAN - Leveleditor&quot;);
	system(&quot;COLOR 1F&quot;);

	if (load==true)
	{
		//LOAD
	}
	else
	{
		for (int i=0; i &lt; zeilen; i++)
		{
			for (int k=0; k &lt; spalten; k++)
			{
				if (i==0 || i==zeilen-1 || k==0 || k==spalten-1)
				{
					feld[(i*spalten)+k] = mauer;
				}
				else
				{
					feld[(i*spalten)+k] = leer;
				}

				cout &lt;&lt; feld[(i*spalten)+k];
			}

			cout &lt;&lt; endl;
		}
	}

	gotoxy(x,y);

	do
	{
		taste = getch();

		if (!kbhit())
		{
			switch (taste)
			{
				//Leere einfügen
				case 'l':
				{
					feld[(y*spalten)+x] = taste;
					cout &lt;&lt; leer;
					gotoxy(x,y);
					break;
				}

				//Futter einfügen
				case 'f':
				{
					feld[(y*spalten)+x] = taste;
					cout &lt;&lt; futter;
					gotoxy(x,y);
					break;
				}

				//Mauer einfügen
				case 'm':
				{
					feld[(y*spalten)+x] = taste;
					cout &lt;&lt; mauer;
					gotoxy(x,y);
					break;
				}

				//Ende und speichern
				case 27:
				{
					ende = true;
					break;
				}

				//Pfeiltaste nach oben
				case 72:
				{
					y--;
					if (y &lt; 0) { y = 0; }
					gotoxy(x,y);
					break;
				}

				//Pfeiltaste nach rechts
				case 77:
				{
					x++;
					if (x &gt; spalten-1) { x = 0; y++; }
					if (y &gt; zeilen-1) { y = zeilen-1; }
					gotoxy(x,y);
					break;
				}

				//Pfeiltaste nach unten
				case 80:
				{
					y++;
					if (y &gt;= zeilen-1) { y = zeilen-1; }
					gotoxy(x,y);
					break;
				}

				//Pfeiltaste nach links
				case 75:
				{
					x--;
					if (x &lt; 0) { x = spalten-1; y--; }
					if (y &lt; 0) { y = 0; }
					gotoxy(x,y);
					break;
				}
			}
		}
	} while (ende!=true);

	system(&quot;cls&quot;);

	cout &lt;&lt; &quot;Datei wird gespeichert... (&quot; &lt;&lt; dateiname &lt;&lt; &quot;)&quot; &lt;&lt; endl;

	FILE *f	= fopen((char*)dateiname, &quot;wb&quot;);
	fwrite(&amp;spalten,1,sizeof(int),f);
	fwrite(&amp;zeilen,1,sizeof(int),f);
	for (int i=0; i &lt; (zeilen*spalten); i++)
	{
		fwrite(&amp;feld[i],1,sizeof(char),f);
	}
	fclose(f);

	cout &lt;&lt; &quot;Datei erfolgreich gespeichert.&quot; &lt;&lt; endl;
	cout &lt;&lt; &quot;Weiter mit beliebiger Taste.&quot; &lt;&lt; endl;

	getch();

	return 0;
}
</code></pre>
<p>Das ist der Ausschnitt indem ich die Zeilen und SPaltenzahl sowie das eindimensionale Array feld[] in eine datei speichere:</p>
<pre><code class="language-cpp">FILE *f	= fopen((char*)dateiname, &quot;wb&quot;);
	fwrite(&amp;spalten,1,sizeof(int),f);
	fwrite(&amp;zeilen,1,sizeof(int),f);
	for (int i=0; i &lt; (zeilen*spalten); i++)
	{
		fwrite(&amp;feld[i],1,sizeof(char),f);
	}
	fclose(f);
</code></pre>
<p>nun fehlt mir eben noch eine routine mit der ich die daten die ich in die datei schreibe wieder auslese und wieder den variablen zeile, spalte und in das array lese um wieder damit zu arbeiten.</p>
<p>aktuell habe ich in einem anderen projekt um das laden von binärdateien zu testen folgendes gemacht:</p>
<pre><code class="language-cpp">int dat,i=0,;
    unsigned char binptr[1];

    FILE *f    = fopen(&quot;test.txt&quot;, &quot;rb&quot;);

    while ((dat = getc(f)) != EOF)
    {
        cout &lt;&lt; dat &lt;&lt; endl;
        i++;
    }

    cout &lt;&lt; endl &lt;&lt; i;

    fclose(f);
</code></pre>
<p>da hab ich allerdings das gefühl es fehlt irgendwie, irgendwas. vorallem da die ersten zeilen für zeile und spalte 0 sind???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/939842</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939842</guid><dc:creator><![CDATA[ViperNeo]]></dc:creator><pubDate>Sun, 11 Dec 2005 21:03:21 GMT</pubDate></item><item><title><![CDATA[Reply to problem beim einlesen einer binärdatei on Sun, 11 Dec 2005 21:33:00 GMT]]></title><description><![CDATA[<p>Wie schon gesagt mit getc() gehts nicht (oder nicht so einfach ) das liest nur ein byte ( sehe gerade habe in meinem obigen posting von fgetc() gesprochen aber das ist sowieso das gleiche ). mit fread() geht's wie das schreiben.<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/939854</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939854</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sun, 11 Dec 2005 21:33:00 GMT</pubDate></item><item><title><![CDATA[Reply to problem beim einlesen einer binärdatei on Sun, 11 Dec 2005 21:44:22 GMT]]></title><description><![CDATA[<p>wie meinst du das wie das schreiben? kannst du mir ein beispiel nennen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/939861</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939861</guid><dc:creator><![CDATA[ViperNeo]]></dc:creator><pubDate>Sun, 11 Dec 2005 21:44:22 GMT</pubDate></item><item><title><![CDATA[Reply to problem beim einlesen einer binärdatei on Sun, 11 Dec 2005 22:15:59 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">FILE *f    = fopen((char*)dateiname, &quot;rb&quot;);
    int spalten, zeilen;
    char * feld;
    fread(&amp;spalten,1,sizeof(int),f);
    fread(&amp;zeilen,1,sizeof(int),f);
    feld = new char[spalten*zeilen];
    fread(feld,zeilen*spalten,sizeof(char),f);
    fclose(f);
</code></pre>
<p>So müsste es gehen. Ich sehe aber geradee dass ich dich vermutlich verwirrt habe. Bin nämlich die ganze zeit davon ausgegangen das feld ein array von ints ist. Bei array of char funktioniert natürlich fgetc() oder getc() in einer schleife genausogut<br />
Kurt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/939883</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/939883</guid><dc:creator><![CDATA[ZuK]]></dc:creator><pubDate>Sun, 11 Dec 2005 22:15:59 GMT</pubDate></item></channel></rss>