<?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[Warum schmiert das Programm beim einlesen aus Dateien ab?]]></title><description><![CDATA[<p>Hi!<br />
Im rahmen eines Physikprojekts habe ich ein System simuliert und will nun die ergebnisse die in ca. 50 dateien gespeichert sind in einer zusammenfassen (und während dessen diverse einträge löschen).</p>
<pre><code>int main()
{
   char M_string [30];
   char P_string [30];
   vector&lt;double&gt; M;
   vector&lt;double&gt; P;
   for(int M_index=1;M_index&lt;4;M_index=M_index+2)
   {
      char dateiname[37]=&quot;&quot;;
      char temp [2]=&quot;&quot;;
      /////Dateinamen erstellen//////
      strcat(dateiname,&quot;P&quot;);
      itoa(M_index,temp,10);
      strcat(dateiname,temp);
      strcat(dateiname,&quot;.txt&quot;);
      //////////////////////////////
      fstream datei;
      if(datei.good())
        cout &lt;&lt;&quot;datei vorhanden&quot;&lt;&lt;endl;
      getchar();
      datei.open(dateiname,ios::in);
      while(!datei.eof())
      {
         datei.getline(M_string,30,' ');
         datei.getline(P_string,30,'\n');
         M.push_back(atof(M_string));
         P.push_back(atof(P_string));
     }
     datei.close();
   }
}
</code></pre>
<p>Der Code macht also folgendes. Erst wird ein Dateiname bestimmt. Das geht leicht in der Forschleife da die Dateien nach einem Muster benannt sind. P1.txt, P3.txt, p5.txt usw. Dann hab ich den Dateinamen in einem String, öffne die Datei, geh zeilenweise bis zum ende durch und setze die Werte in die jeweiligen Vectorvariablen. Soweit so gut.<br />
Die erste Datei wird geöffnet und richtig eingelesen. Dann gehts aber zur nächsten, P3.txt.<br />
die Abfrage ob die Datei existiert, liefert auch die Meldung das die Datei da ist. Aber dann schmiert das programm windowstypisch ab. &quot;merge.exe hat ein Problem festgestellt und muss beendet werden&quot;. Ich komm grad nicht dahinter warum das so ist. Die Dateien unterscheiden sich nicht voneinander. In jeder stehen nur Zahlen in der gleichen syntax, also zahl1 zahl2.<br />
Was mach ich falsch, oder was hab ich vergessen?<br />
thx.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/220833/warum-schmiert-das-programm-beim-einlesen-aus-dateien-ab</link><generator>RSS for Node</generator><lastBuildDate>Tue, 06 Oct 2026 17:13:29 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/220833.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 21 Aug 2008 17:10:15 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Warum schmiert das Programm beim einlesen aus Dateien ab? on Thu, 21 Aug 2008 17:10:15 GMT]]></title><description><![CDATA[<p>Hi!<br />
Im rahmen eines Physikprojekts habe ich ein System simuliert und will nun die ergebnisse die in ca. 50 dateien gespeichert sind in einer zusammenfassen (und während dessen diverse einträge löschen).</p>
<pre><code>int main()
{
   char M_string [30];
   char P_string [30];
   vector&lt;double&gt; M;
   vector&lt;double&gt; P;
   for(int M_index=1;M_index&lt;4;M_index=M_index+2)
   {
      char dateiname[37]=&quot;&quot;;
      char temp [2]=&quot;&quot;;
      /////Dateinamen erstellen//////
      strcat(dateiname,&quot;P&quot;);
      itoa(M_index,temp,10);
      strcat(dateiname,temp);
      strcat(dateiname,&quot;.txt&quot;);
      //////////////////////////////
      fstream datei;
      if(datei.good())
        cout &lt;&lt;&quot;datei vorhanden&quot;&lt;&lt;endl;
      getchar();
      datei.open(dateiname,ios::in);
      while(!datei.eof())
      {
         datei.getline(M_string,30,' ');
         datei.getline(P_string,30,'\n');
         M.push_back(atof(M_string));
         P.push_back(atof(P_string));
     }
     datei.close();
   }
}
</code></pre>
<p>Der Code macht also folgendes. Erst wird ein Dateiname bestimmt. Das geht leicht in der Forschleife da die Dateien nach einem Muster benannt sind. P1.txt, P3.txt, p5.txt usw. Dann hab ich den Dateinamen in einem String, öffne die Datei, geh zeilenweise bis zum ende durch und setze die Werte in die jeweiligen Vectorvariablen. Soweit so gut.<br />
Die erste Datei wird geöffnet und richtig eingelesen. Dann gehts aber zur nächsten, P3.txt.<br />
die Abfrage ob die Datei existiert, liefert auch die Meldung das die Datei da ist. Aber dann schmiert das programm windowstypisch ab. &quot;merge.exe hat ein Problem festgestellt und muss beendet werden&quot;. Ich komm grad nicht dahinter warum das so ist. Die Dateien unterscheiden sich nicht voneinander. In jeder stehen nur Zahlen in der gleichen syntax, also zahl1 zahl2.<br />
Was mach ich falsch, oder was hab ich vergessen?<br />
thx.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569104</guid><dc:creator><![CDATA[Arp]]></dc:creator><pubDate>Thu, 21 Aug 2008 17:10:15 GMT</pubDate></item><item><title><![CDATA[Reply to Warum schmiert das Programm beim einlesen aus Dateien ab? on Thu, 21 Aug 2008 18:03:46 GMT]]></title><description><![CDATA[<p>Habs nicht ausprobiert, aber so in etwa sollte es besser gehen, also mit diesen fehleranfälligen char[].</p>
<pre><code class="language-cpp">int main()
{
   vector&lt;double&gt; M;
   vector&lt;double&gt; P;
   for(int M_index=1;M_index&lt;4;M_index=M_index+2)
   {
      /////Dateinamen erstellen//////
      stringstream dateiname;
      dateiname&lt;&lt;&quot;P&quot;&lt;&lt;M_index&lt;&lt;&quot;.txt&quot;;
      //////////////////////////////
      fstream datei(dateiname.str().c_str(),ios::in);
      if(datei){
        cout &lt;&lt;&quot;datei vorhanden&quot;&lt;&lt;endl;
        while(!datei.eof())
        {
           double m,p;
           datei&gt;&gt;m&gt;&gt;p;
           if(!datei.fail())
           {
             M.push_back(m);
             P.push_back(p);
           }
        }
      }
     datei.close(); //muss nicht sein
   }
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1569137</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569137</guid><dc:creator><![CDATA[Malso]]></dc:creator><pubDate>Thu, 21 Aug 2008 18:03:46 GMT</pubDate></item><item><title><![CDATA[Reply to Warum schmiert das Programm beim einlesen aus Dateien ab? on Thu, 21 Aug 2008 18:59:17 GMT]]></title><description><![CDATA[<p>Hi!<br />
Danke erstmal.</p>
<p>Deine Version macht aber genau das gleiche. Die erste Datei wird eingelesen und in die vectors gepackt, und danach schmiert das programm ab.<br />
Ich nutze als compiler übrigens dev-c++, falls das irgendwie wichtig sein sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569162</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569162</guid><dc:creator><![CDATA[Arp]]></dc:creator><pubDate>Thu, 21 Aug 2008 18:59:17 GMT</pubDate></item><item><title><![CDATA[Reply to Warum schmiert das Programm beim einlesen aus Dateien ab? on Thu, 21 Aug 2008 19:12:16 GMT]]></title><description><![CDATA[<p>Jetzt läufts. Hatte fälschlicherweise falsche werte aus den dateien gelöscht und das scheint dem vector wohl irgendwie nicht gefallen zu haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1569167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1569167</guid><dc:creator><![CDATA[Arp]]></dc:creator><pubDate>Thu, 21 Aug 2008 19:12:16 GMT</pubDate></item></channel></rss>