<?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: Absturz wenn gewisse int-Variable &amp;gt; 90.750]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>ich habe nochmal ein kleines Problem, das ich einfach nicht kapiere. vielleicht könnt ihr mir weiterhelfen, oder zumindest einfach nur sagen, woran es liegt/liegen könnte.</p>
<p>Hier der relevante Code:</p>
<pre><code class="language-cpp">int i, anzch = 90750;
char suche[anzch];

for (j=0;j&lt;count;j++)
  {
    datei1 = svg[j];
    file.open (datei1.c_str(), ifstream::in);
	cout &lt;&lt; endl &lt;&lt; &quot;Datei wird durchsucht:\t&quot; &lt;&lt; datei1 &lt;&lt; endl;
	for (i=0;i&lt;anzch;i++) 													// Datei durchsuchen...
	  {			  
	    ch = file.get();
	    suche[i] = ch;
	    if (suche[i] == 'Ã' )												// ... nach Umlauten
	      {
	        i = anzch;
			convert[z] = datei1;
	        z++;
	        cout &lt;&lt; &quot;\tUmlaut gefunden.&quot;;
	      }
		if (file.eof())														// Abbruch bei Dateiende
	      {
	        i = anzch;
	      }
	  }
	cout &lt;&lt; endl;
	file.close();
  }
</code></pre>
<p>anzch ist z.Z. auf 90750 gesetzt. Alles funktioniert einwandfrei, wie ich es haben will. Weiß ich aber der Variable anzch eine größere Zahl zu (schon bei 91000), läuft die FOR-Schleife nicht mehr richtig ab/ wird sie ab der 2. FOR-Schleife ignoriert. Ich habe in mehreren Tests nur diese eine Zahl verändert und davon hing es ab, ob es funktionierte oder nicht. Ich hätte sie aber gerne auf 1.000.000. INT sollte doch einwandfrei bis ca. 2,1 Mrd. funktionieren (und danach abstürzen, aber nicht einfach die Schleife ignorieren)?</p>
<p>Ich bin echt ratlos.</p>
<p>Kurz sei noch erwähnt: Gestern hatte es mal kurzzeitig mit der 1.000.000 geklappt, aber eben nur einmal... habe zwischenzeitlich nicht Relevantes am Code verändert... denke ich zumindest.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/196557/problem-absturz-wenn-gewisse-int-variable-gt-90-750</link><generator>RSS for Node</generator><lastBuildDate>Sat, 02 May 2026 04:32:38 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/196557.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 31 Oct 2007 10:03:01 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem: Absturz wenn gewisse int-Variable &amp;gt; 90.750 on Wed, 31 Oct 2007 10:03:01 GMT]]></title><description><![CDATA[<p>Hallo Forum,</p>
<p>ich habe nochmal ein kleines Problem, das ich einfach nicht kapiere. vielleicht könnt ihr mir weiterhelfen, oder zumindest einfach nur sagen, woran es liegt/liegen könnte.</p>
<p>Hier der relevante Code:</p>
<pre><code class="language-cpp">int i, anzch = 90750;
char suche[anzch];

for (j=0;j&lt;count;j++)
  {
    datei1 = svg[j];
    file.open (datei1.c_str(), ifstream::in);
	cout &lt;&lt; endl &lt;&lt; &quot;Datei wird durchsucht:\t&quot; &lt;&lt; datei1 &lt;&lt; endl;
	for (i=0;i&lt;anzch;i++) 													// Datei durchsuchen...
	  {			  
	    ch = file.get();
	    suche[i] = ch;
	    if (suche[i] == 'Ã' )												// ... nach Umlauten
	      {
	        i = anzch;
			convert[z] = datei1;
	        z++;
	        cout &lt;&lt; &quot;\tUmlaut gefunden.&quot;;
	      }
		if (file.eof())														// Abbruch bei Dateiende
	      {
	        i = anzch;
	      }
	  }
	cout &lt;&lt; endl;
	file.close();
  }
</code></pre>
<p>anzch ist z.Z. auf 90750 gesetzt. Alles funktioniert einwandfrei, wie ich es haben will. Weiß ich aber der Variable anzch eine größere Zahl zu (schon bei 91000), läuft die FOR-Schleife nicht mehr richtig ab/ wird sie ab der 2. FOR-Schleife ignoriert. Ich habe in mehreren Tests nur diese eine Zahl verändert und davon hing es ab, ob es funktionierte oder nicht. Ich hätte sie aber gerne auf 1.000.000. INT sollte doch einwandfrei bis ca. 2,1 Mrd. funktionieren (und danach abstürzen, aber nicht einfach die Schleife ignorieren)?</p>
<p>Ich bin echt ratlos.</p>
<p>Kurz sei noch erwähnt: Gestern hatte es mal kurzzeitig mit der 1.000.000 geklappt, aber eben nur einmal... habe zwischenzeitlich nicht Relevantes am Code verändert... denke ich zumindest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1395064</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1395064</guid><dc:creator><![CDATA[Alpen-Benni]]></dc:creator><pubDate>Wed, 31 Oct 2007 10:03:01 GMT</pubDate></item><item><title><![CDATA[Reply to Problem: Absturz wenn gewisse int-Variable &amp;gt; 90.750 on Wed, 31 Oct 2007 10:08:14 GMT]]></title><description><![CDATA[<p>Schon die Konstruktion &quot;char suche[anzch];&quot; ist an sich fragwürdig - VLAs gibt es in C99, aber nicht in C++. Hast du mal versucht, diese Konstruktion durch einen vector&lt;char&gt; zu ersetzen?</p>
<p>Außerdem werden beim Schließen und Neu-Öffnen des Streams die Fehlerflags afair nicht zurückgesetzt - das mußt du schon selber machen.</p>
<p>(btw, ist die Datei überhaupt groß genug? Und hast du schonmal von 'break;' gehört?)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1395068</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1395068</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 31 Oct 2007 10:08:14 GMT</pubDate></item><item><title><![CDATA[Reply to Problem: Absturz wenn gewisse int-Variable &amp;gt; 90.750 on Wed, 31 Oct 2007 10:28:50 GMT]]></title><description><![CDATA[<p>Danke für die Antwort.</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>Schon die Konstruktion &quot;char suche[anzch];&quot; ist an sich fragwürdig - VLAs gibt es in C99, aber nicht in C++. Hast du mal versucht, diese Konstruktion durch einen vector&lt;char&gt; zu ersetzen?</p>
</blockquote>
<p>vector&lt;char&gt; sagt mir nichts. Ich bin noch absoluter C++-Newbie. Was aber ist an &quot;char suche[anzch]&quot; verwerflich? Es funktioniert doch (bis zu einem gewissen Grad). Liegt es daran?</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>Außerdem werden beim Schließen und Neu-Öffnen des Streams die Fehlerflags afair nicht zurückgesetzt - das mußt du schon selber machen.</p>
</blockquote>
<p>&quot;fehlerflags afair nicht zurückgesetzt)? Das sagt mir leider überhaupt nichts... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
<p>CStoll schrieb:</p>
<blockquote>
<p>(btw, ist die Datei überhaupt groß genug? Und hast du schonmal von 'break;' gehört?)</p>
</blockquote>
<p>Datei groß genug? welche Datei? Die zu durchsuchenden sind oft größer als 90kb und werden somit mit den &quot;90750&quot; nicht gänzlich durchsucht.</p>
<p>btw: Gibt es eine simple Möglichkeit, die Dateien &quot;von hinten&quot; zu durchsuchen, also vom letzten Zeichen? Das gesuchte Zeichen befindet sich nämlich immer in den letzten paar-tausend Bytes der Dateien.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1395083</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1395083</guid><dc:creator><![CDATA[Alpen-Benni]]></dc:creator><pubDate>Wed, 31 Oct 2007 10:28:50 GMT</pubDate></item><item><title><![CDATA[Reply to Problem: Absturz wenn gewisse int-Variable &amp;gt; 90.750 on Wed, 31 Oct 2007 10:56:38 GMT]]></title><description><![CDATA[<p>Alpen-Benni schrieb:</p>
<blockquote>
<p>Danke für die Antwort.</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>Schon die Konstruktion &quot;char suche[anzch];&quot; ist an sich fragwürdig - VLAs gibt es in C99, aber nicht in C++. Hast du mal versucht, diese Konstruktion durch einen vector&lt;char&gt; zu ersetzen?</p>
</blockquote>
<p>vector&lt;char&gt; sagt mir nichts. Ich bin noch absoluter C++-Newbie. Was aber ist an &quot;char suche[anzch]&quot; verwerflich? Es funktioniert doch (bis zu einem gewissen Grad). Liegt es daran?</p>
</blockquote>
<p>VLAs (Variable Length Arrays - die Größe des Arrays wird zur Laufzeit festgelegt) sind eine Erweiterung aus C99, die in C++ eigentlich nicht üblich ist. &quot;Wir&quot; haben stattdessen Containerklassen wie den erwähnten std::vector&lt;&gt;.<br />
(Für Details empfehle ich meinen Artikel &quot;Aufbau der STL&quot; - zu finden bei uns im Magazin)</p>
<blockquote>
<p>CStoll schrieb:</p>
<blockquote>
<p>Außerdem werden beim Schließen und Neu-Öffnen des Streams die Fehlerflags afair nicht zurückgesetzt - das mußt du schon selber machen.</p>
</blockquote>
<p>&quot;fehlerflags afair nicht zurückgesetzt)? Das sagt mir leider überhaupt nichts... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Wenn du die innerste Schleife über den &quot;if(file.eof()...&quot; Weg verlässt, bleibt das eofbit und failbit der Datei stehen, auch wenn du sie zwischendurch neu öffnest - das mußt du mit file.clear() wieder zurücksetzen, bevor du etwas mit der Datei anfangen kannst.</p>
<p>(btw, das eofbit wird nicht beim letzten lesbaren Zeichen gesetzt, sondern beim ersten Versuch, jenseits des Dateiendes weiterzulesen)</p>
<blockquote>
<p>btw: Gibt es eine simple Möglichkeit, die Dateien &quot;von hinten&quot; zu durchsuchen, also vom letzten Zeichen? Das gesuchte Zeichen befindet sich nämlich immer in den letzten paar-tausend Bytes der Dateien.</p>
</blockquote>
<p>Direkt &quot;von hinten&quot; durchsuchen kannst du nicht - aber du kannst mit seekg() festlegen, wo du mit der Suche beginnen willst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1395112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1395112</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 31 Oct 2007 10:56:38 GMT</pubDate></item><item><title><![CDATA[Reply to Problem: Absturz wenn gewisse int-Variable &amp;gt; 90.750 on Wed, 31 Oct 2007 11:03:45 GMT]]></title><description><![CDATA[<p>CStoll schrieb:</p>
<blockquote>
<p>VLAs (Variable Length Arrays - die Größe des Arrays wird zur Laufzeit festgelegt) sind eine Erweiterung aus C99, die in C++ eigentlich nicht üblich ist. &quot;Wir&quot; haben stattdessen Containerklassen wie den erwähnten std::vector&lt;&gt;.<br />
(Für Details empfehle ich meinen Artikel &quot;Aufbau der STL&quot; - zu finden bei uns im Magazin)</p>
</blockquote>
<p>Danke, das werde ich mal alles durcharbeiten.</p>
<p>CStoll schrieb:</p>
<blockquote>
<p>Direkt &quot;von hinten&quot; durchsuchen kannst du nicht - aber du kannst mit seekg() festlegen, wo du mit der Suche beginnen willst.</p>
</blockquote>
<p>Das nützt mir leider nichts, die Dateien können 1-2 kb groß sein, aber auch deutlich über 100 kb...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1395115</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1395115</guid><dc:creator><![CDATA[Alpen-Benni]]></dc:creator><pubDate>Wed, 31 Oct 2007 11:03:45 GMT</pubDate></item><item><title><![CDATA[Reply to Problem: Absturz wenn gewisse int-Variable &amp;gt; 90.750 on Wed, 31 Oct 2007 14:38:14 GMT]]></title><description><![CDATA[<p>Mal grundsätzlich eine Frage: Warum speicherst Du ünberhaupt die ganzen Daten der Datei im Hauptspeicher? Für diesen Code ist das doch gar nicht nötig.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1395288</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1395288</guid><dc:creator><![CDATA[Martin Richter]]></dc:creator><pubDate>Wed, 31 Oct 2007 14:38:14 GMT</pubDate></item></channel></rss>