<?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[c++ readFile komische Ausgabe]]></title><description><![CDATA[<p>Hey<br />
Ich habe folgendes Problem. Ich muss eine textdatei einlesen( mit readFile) und die einzelnen zeichend in einen char array speichern zur weiterverarbeitung. Habe in c++ noch nicht so viele erfahrungen und muss herlich zugeben, dass ich das was ich zu readFile im i net gefunden habe nicht alles hundert prozentig verstanden habe ;). Habe folgenden quelltext im i net gefunden und mal in mein projekt reinkopiert um zu schauen was passiert( habe eine textdatei mit dem namen data.txt angelegt eine 1 eingefügt und in den ordner mit meinem c++ projekt gespeichert. War soweit auch alles io nur die konsolenausgabe war dann eben keine 1 sondern eine zahlenfolge 52529....<br />
Was ist da passiert und wie bekomme ich stattdessen die einzelnen zeichen als chars in ein array..so das danach auch wirklich die zeichen und nicht zahlenfolgen drinsteh?</p>
<p>HANDLE hFile = CreateFile(TEXT(&quot;data.txt&quot;), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);<br />
if(hFile == INVALID_HANDLE_VALUE) {<br />
std::cout &lt;&lt; &quot;Datei konnte nicht geöffnet werden!&quot; &lt;&lt; std::endl;<br />
return EXIT_FAILURE;<br />
}</p>
<p>// Dateigröße ermitteln<br />
DWORD dwFileSize = GetFileSize(hFile, NULL);</p>
<p>// Speicher für Buffer reservieren<br />
LPTSTR pszBuffer = new TCHAR[dwFileSize + 1];</p>
<p>// Datei auslesen<br />
DWORD dwBytesRead = 0;<br />
ReadFile(hFile, pszBuffer, dwFileSize, &amp;dwBytesRead, NULL);<br />
pszBuffer[dwBytesRead] = '\0';</p>
<p>// Dateiinhalt ausgeben<br />
int i = 0;<br />
while( pszBuffer[i] != '\0')<br />
{<br />
cout &lt;&lt; pszBuffer[i];<br />
i++;</p>
<p>}<br />
// Datei schließen<br />
CloseHandle(hFile);</p>
<p>return EXIT_SUCCESS;<br />
}</p>
<p>LG Susi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/252563/c-readfile-komische-ausgabe</link><generator>RSS for Node</generator><lastBuildDate>Mon, 14 Sep 2026 04:54:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/252563.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 21 Oct 2009 15:45:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to c++ readFile komische Ausgabe on Wed, 21 Oct 2009 15:45:17 GMT]]></title><description><![CDATA[<p>Hey<br />
Ich habe folgendes Problem. Ich muss eine textdatei einlesen( mit readFile) und die einzelnen zeichend in einen char array speichern zur weiterverarbeitung. Habe in c++ noch nicht so viele erfahrungen und muss herlich zugeben, dass ich das was ich zu readFile im i net gefunden habe nicht alles hundert prozentig verstanden habe ;). Habe folgenden quelltext im i net gefunden und mal in mein projekt reinkopiert um zu schauen was passiert( habe eine textdatei mit dem namen data.txt angelegt eine 1 eingefügt und in den ordner mit meinem c++ projekt gespeichert. War soweit auch alles io nur die konsolenausgabe war dann eben keine 1 sondern eine zahlenfolge 52529....<br />
Was ist da passiert und wie bekomme ich stattdessen die einzelnen zeichen als chars in ein array..so das danach auch wirklich die zeichen und nicht zahlenfolgen drinsteh?</p>
<p>HANDLE hFile = CreateFile(TEXT(&quot;data.txt&quot;), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);<br />
if(hFile == INVALID_HANDLE_VALUE) {<br />
std::cout &lt;&lt; &quot;Datei konnte nicht geöffnet werden!&quot; &lt;&lt; std::endl;<br />
return EXIT_FAILURE;<br />
}</p>
<p>// Dateigröße ermitteln<br />
DWORD dwFileSize = GetFileSize(hFile, NULL);</p>
<p>// Speicher für Buffer reservieren<br />
LPTSTR pszBuffer = new TCHAR[dwFileSize + 1];</p>
<p>// Datei auslesen<br />
DWORD dwBytesRead = 0;<br />
ReadFile(hFile, pszBuffer, dwFileSize, &amp;dwBytesRead, NULL);<br />
pszBuffer[dwBytesRead] = '\0';</p>
<p>// Dateiinhalt ausgeben<br />
int i = 0;<br />
while( pszBuffer[i] != '\0')<br />
{<br />
cout &lt;&lt; pszBuffer[i];<br />
i++;</p>
<p>}<br />
// Datei schließen<br />
CloseHandle(hFile);</p>
<p>return EXIT_SUCCESS;<br />
}</p>
<p>LG Susi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1795871</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1795871</guid><dc:creator><![CDATA[SusaSch]]></dc:creator><pubDate>Wed, 21 Oct 2009 15:45:17 GMT</pubDate></item><item><title><![CDATA[Reply to c++ readFile komische Ausgabe on Wed, 21 Oct 2009 19:26:48 GMT]]></title><description><![CDATA[<p>Lies halt mal nur 1 Byte ein, anstatt das gesamte File.</p>
<p>btw: nutze die cpp-Tags</p>
<pre><code class="language-cpp">HANDLE hFile = CreateFile(TEXT(&quot;data.txt&quot;), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if(hFile == INVALID_HANDLE_VALUE) {
std::cout &lt;&lt; &quot;Datei konnte nicht geöffnet werden!&quot; &lt;&lt; std::endl;
return EXIT_FAILURE;
}

// Speicher für Buffer reservieren
TCHAR pszBuffer[4];

// Datei auslesen
DWORD dwBytesRead = 0;
ReadFile(hFile, pszBuffer, 4, &amp;dwBytesRead, NULL);
pszBuffer[dwBytesRead] = '\0';

// Dateiinhalt ausgeben
int i = 0;
while( pszBuffer[i] != '\0')
{
  cout &lt;&lt; pszBuffer[i];
  i++;
}
// Datei schließen
CloseHandle(hFile);

return EXIT_SUCCESS;
}
</code></pre>
<p>Ohne Garantie, aber in etwa in diese Richtung sollte es gehen.</p>
<p>Allerdings würde ich, wenn du sowieso mit der Standardbibliothek arbeiten kannst die auch gleich nutzen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;ifstream&gt;

int main ()
{
  int value = 0; 

  std::ifstream in (&quot;data.txt&quot;);

  in &gt;&gt; value;

  std::cout &lt;&lt; &quot;Wert eingelesen: &quot; &lt;&lt; value &lt;&lt; std::endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1795973</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1795973</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 21 Oct 2009 19:26:48 GMT</pubDate></item><item><title><![CDATA[Reply to c++ readFile komische Ausgabe on Sat, 24 Oct 2009 17:58:43 GMT]]></title><description><![CDATA[<p>Hey<br />
Ok das ausgabe problem habe ich inzwischen gelöst..wird mir alles auf der konsole ausgegeben. Jetzt möchte ich das file aber stück für stück einlesen d.h. 5 zeichen in meinen buffer lesen und den buffer ausgeben..dann die nächsten 5 zeichen aus dem file in den buffer lesen ...usw. Die frage ist wo gebe ich das an das ich erst z.b. ab dem 5 zeichen im file das lesen des files starten will?</p>
<p>LG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797612</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797612</guid><dc:creator><![CDATA[SusaSch]]></dc:creator><pubDate>Sat, 24 Oct 2009 17:58:43 GMT</pubDate></item><item><title><![CDATA[Reply to c++ readFile komische Ausgabe on Sat, 24 Oct 2009 22:20:28 GMT]]></title><description><![CDATA[<p><a href="http://www.cplusplus.com/reference/iostream/istream/seekg/" rel="nofollow">http://www.cplusplus.com/reference/iostream/istream/seekg/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1797749</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1797749</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 24 Oct 2009 22:20:28 GMT</pubDate></item></channel></rss>