<?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++ Codefehler&#x2F;&#x2F; Program bricht ab]]></title><description><![CDATA[<p>Also kurz vorneweg,<br />
ich bin anfänger un habe bisher nur ganz wenig mit c gemacht und jetzt ein<br />
Tutorial zu C++ durch.</p>
<p>Jetzt wollte ich ein Programm schreiben das daten in eine datei schreibt bzw. dies wieder ausliest (kann man ja immer mal gebrauchen beim weiteren progen oder?)</p>
<p>Mein compiler (Dev-C++) meldet auch keinen Fehler aber das Programm schmiert ab,<br />
und es kommt dieser Windows dialog (Hat fehler festgestellt und musste beendet werden)</p>
<p>hier mal der Code</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
using namespace std;

string dateiname = &quot;Data.exe&quot;;
string text;//ablage für ausgelesenen text
string funkt = &quot;main&quot;; //letzte laufende funkion

int main();
int einlesen(int zeile);
int schreiben(int zeile, string stext);

int main()
{
    string test = &quot;test&quot;;
    schreiben(2, test);
    cout &lt;&lt;&quot;geschrieben \n&quot;;
}

int einlesen(int zeile)
{

    if(zeile &lt; 1)//wenn zeile unter 1 ungültig
    {
             cout &lt;&lt; &quot;interner input-line-error 201\n&quot;;
             return -1;
    }

    ifstream input; //inputfilestream objekt
    input.open(dateiname.c_str(), ios_base::in);//öffne dateiname zum einlesen

    if(!input)//wenn input fehlschlägt
    {
              cout &lt;&lt; &quot;data-input-error 202\n&quot;;
              return -1;
    }

    while(!input.eof()) //solange input nicht beim end of file ist
    {        
        char zeichen;  //zwischenspeicher der einzelnden Zeichen (weil auslesen nur einzelnde Zeichen)
        input.get(zeichen); //einlesen
        if( zeichen == '\n') //wenn ende einer Zeile
        {
            zeile++;//Zeilenanzahl erhöhen
        }
        if(zeile == zeile)//wenn gewünschte Zeilenanzahl erreich
        {
          text+= zeichen; //zeichen in text schreiben
        }

    } 
    input.close();//schließt den input
    return 0;// rückgabe des strings an die Aufrufende funktion (hoffentlich)
}

int schreiben(int zeile, string stext) //achtung die gewünschte Zeile wird komplett überschrieben
{
    //lesen  
    int geszeilen = 1;//gesamtzahl der Zeilen der datei anfang mit 1
    string gestext;//ablage für den gesamten Dateiinhalt

    ifstream input; //inputfilestream objekt
    input.open(dateiname.c_str(), ios_base::in);//öffne dateiname zum einlesen

    if(!input)//wenn input fehlschlägt
    {
              cout &lt;&lt; &quot;data-input-error 202\n&quot;;
              return -1;
    }
    while(!input.eof()) //solange input nicht beim end of file ist
    {        
        char zeichen;  //zwischenspeicher der einzelnden Zeichen (weil auslesen nur einzelnde Zeichen)
        input.get(zeichen); //einlesen
        gestext+= zeichen; //zeichen in text schreiben
        if(zeichen == '\n')//wenn Zeichen enspricht neue Zeile
        {
                   geszeilen++;//erhöhen der Zeilenanzahl
        }
    }  
    input.close();//schließt den input
    string zeilentext[geszeilen];//erstellt arry zeilentext so oft wie zeilen
    //ende lesen 1

    cout &lt;&lt;&quot;geschrieben \n&quot;;
    //lesen 2
    ifstream input2; //inputfilestream objekt
    input2.open(dateiname.c_str(), ios_base::in);//öffne dateiname zum einlesen

    if(!input2)//wenn input fehlschlägt
    {
              cout &lt;&lt; &quot;data-input-error 202\n&quot;;
              return -1;
    }

    while(!input2.eof()) //solange input nicht beim end of file ist
    {        
        int i = 1; //internes zeilenzählen
        char zeichen;  //zwischenspeicher der einzelnden Zeichen (weil auslesen nur einzelnde Zeichen)
        input2.get(zeichen); //einlesen
        zeilentext[i]+= zeichen; //schreibt die ausgelesenen Zechen in die zugehöhrige zeile
        if( zeichen == '\n') //wenn ende einer Zeile
        {
            i++;//Zeilenanzahl erhöhen
        }
    }
    input2.close();
    //ende lesen 2

    //schreiben
    ofstream output; //objekt output aus ofstream
    output.open(dateiname.c_str(), ios_base::out);  //öffnet den output der datei dateiname, und überschreibt

    if(!output) // wenn output fehlgeschlagen
    {
        cout &lt;&lt; &quot;Output-error 101\n&quot;;
        return -1; //raus aus der funkion
    }

    string komptext; //sting für den zusammengeführten text
    for(int i = 1; i &lt; geszeilen; i++) //wen internerzähler unter anzahl der zeilen
    {
            if(i == zeile) //wenn interner zähler ist gewünschte Zeile
            {
                 komptext+= stext; //der gesammtext wird um gewünschten text statt vorherigen erweitert
            }
            else
            {
                 komptext+=zeilentext[i]; //ansonsten um vorgänger
            }
    }
    output &lt;&lt; komptext; //schreibt text

    output.close(); //schließt die output
    return einlesen(1);
}
</code></pre>
<p>ich hoffe die Komentare zeigen die Aufgaben klar genug,</p>
<p>währe nett wenn ihr mir helfen könntet,</p>
<p>und am besten währe es wenn ihr mir auch sagt was ihr verändert habt und warum</p>
<p>danke schon mal</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/130875/c-codefehler-program-bricht-ab</link><generator>RSS for Node</generator><lastBuildDate>Wed, 26 Aug 2026 17:58:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/130875.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 28 Dec 2005 12:44:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to C++ Codefehler&#x2F;&#x2F; Program bricht ab on Wed, 28 Dec 2005 12:44:42 GMT]]></title><description><![CDATA[<p>Also kurz vorneweg,<br />
ich bin anfänger un habe bisher nur ganz wenig mit c gemacht und jetzt ein<br />
Tutorial zu C++ durch.</p>
<p>Jetzt wollte ich ein Programm schreiben das daten in eine datei schreibt bzw. dies wieder ausliest (kann man ja immer mal gebrauchen beim weiteren progen oder?)</p>
<p>Mein compiler (Dev-C++) meldet auch keinen Fehler aber das Programm schmiert ab,<br />
und es kommt dieser Windows dialog (Hat fehler festgestellt und musste beendet werden)</p>
<p>hier mal der Code</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
using namespace std;

string dateiname = &quot;Data.exe&quot;;
string text;//ablage für ausgelesenen text
string funkt = &quot;main&quot;; //letzte laufende funkion

int main();
int einlesen(int zeile);
int schreiben(int zeile, string stext);

int main()
{
    string test = &quot;test&quot;;
    schreiben(2, test);
    cout &lt;&lt;&quot;geschrieben \n&quot;;
}

int einlesen(int zeile)
{

    if(zeile &lt; 1)//wenn zeile unter 1 ungültig
    {
             cout &lt;&lt; &quot;interner input-line-error 201\n&quot;;
             return -1;
    }

    ifstream input; //inputfilestream objekt
    input.open(dateiname.c_str(), ios_base::in);//öffne dateiname zum einlesen

    if(!input)//wenn input fehlschlägt
    {
              cout &lt;&lt; &quot;data-input-error 202\n&quot;;
              return -1;
    }

    while(!input.eof()) //solange input nicht beim end of file ist
    {        
        char zeichen;  //zwischenspeicher der einzelnden Zeichen (weil auslesen nur einzelnde Zeichen)
        input.get(zeichen); //einlesen
        if( zeichen == '\n') //wenn ende einer Zeile
        {
            zeile++;//Zeilenanzahl erhöhen
        }
        if(zeile == zeile)//wenn gewünschte Zeilenanzahl erreich
        {
          text+= zeichen; //zeichen in text schreiben
        }

    } 
    input.close();//schließt den input
    return 0;// rückgabe des strings an die Aufrufende funktion (hoffentlich)
}

int schreiben(int zeile, string stext) //achtung die gewünschte Zeile wird komplett überschrieben
{
    //lesen  
    int geszeilen = 1;//gesamtzahl der Zeilen der datei anfang mit 1
    string gestext;//ablage für den gesamten Dateiinhalt

    ifstream input; //inputfilestream objekt
    input.open(dateiname.c_str(), ios_base::in);//öffne dateiname zum einlesen

    if(!input)//wenn input fehlschlägt
    {
              cout &lt;&lt; &quot;data-input-error 202\n&quot;;
              return -1;
    }
    while(!input.eof()) //solange input nicht beim end of file ist
    {        
        char zeichen;  //zwischenspeicher der einzelnden Zeichen (weil auslesen nur einzelnde Zeichen)
        input.get(zeichen); //einlesen
        gestext+= zeichen; //zeichen in text schreiben
        if(zeichen == '\n')//wenn Zeichen enspricht neue Zeile
        {
                   geszeilen++;//erhöhen der Zeilenanzahl
        }
    }  
    input.close();//schließt den input
    string zeilentext[geszeilen];//erstellt arry zeilentext so oft wie zeilen
    //ende lesen 1

    cout &lt;&lt;&quot;geschrieben \n&quot;;
    //lesen 2
    ifstream input2; //inputfilestream objekt
    input2.open(dateiname.c_str(), ios_base::in);//öffne dateiname zum einlesen

    if(!input2)//wenn input fehlschlägt
    {
              cout &lt;&lt; &quot;data-input-error 202\n&quot;;
              return -1;
    }

    while(!input2.eof()) //solange input nicht beim end of file ist
    {        
        int i = 1; //internes zeilenzählen
        char zeichen;  //zwischenspeicher der einzelnden Zeichen (weil auslesen nur einzelnde Zeichen)
        input2.get(zeichen); //einlesen
        zeilentext[i]+= zeichen; //schreibt die ausgelesenen Zechen in die zugehöhrige zeile
        if( zeichen == '\n') //wenn ende einer Zeile
        {
            i++;//Zeilenanzahl erhöhen
        }
    }
    input2.close();
    //ende lesen 2

    //schreiben
    ofstream output; //objekt output aus ofstream
    output.open(dateiname.c_str(), ios_base::out);  //öffnet den output der datei dateiname, und überschreibt

    if(!output) // wenn output fehlgeschlagen
    {
        cout &lt;&lt; &quot;Output-error 101\n&quot;;
        return -1; //raus aus der funkion
    }

    string komptext; //sting für den zusammengeführten text
    for(int i = 1; i &lt; geszeilen; i++) //wen internerzähler unter anzahl der zeilen
    {
            if(i == zeile) //wenn interner zähler ist gewünschte Zeile
            {
                 komptext+= stext; //der gesammtext wird um gewünschten text statt vorherigen erweitert
            }
            else
            {
                 komptext+=zeilentext[i]; //ansonsten um vorgänger
            }
    }
    output &lt;&lt; komptext; //schreibt text

    output.close(); //schließt die output
    return einlesen(1);
}
</code></pre>
<p>ich hoffe die Komentare zeigen die Aufgaben klar genug,</p>
<p>währe nett wenn ihr mir helfen könntet,</p>
<p>und am besten währe es wenn ihr mir auch sagt was ihr verändert habt und warum</p>
<p>danke schon mal</p>
]]></description><link>https://www.c-plusplus.net/forum/post/951416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/951416</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Wed, 28 Dec 2005 12:44:42 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Codefehler&#x2F;&#x2F; Program bricht ab on Wed, 28 Dec 2005 13:13:42 GMT]]></title><description><![CDATA[<p>Versuche herraus zu fidnen an welcher stelle dein programm abschmirt. Das machst du am bestsen mit dem Debugger oder mit einer MessageBox.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">#include &lt;cstdlib&gt;
#include &lt;iostream&gt;
#include &lt;windows.h&gt;

using namespace std;

int beepcount = 1;
void beep()
{
    char bla[50];
    itoa(beepcount,bla,sizeof(bla));
    MessageBox(0,bla,bla,0);
    beepcount++;
}

int main(int argc, char *argv[])
{
    string test;
    beep();
    test.substr(-1,1);
    beep();
    system(&quot;PAUSE&quot;);
    return EXIT_SUCCESS;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/951438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/951438</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Wed, 28 Dec 2005 13:13:42 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Codefehler&#x2F;&#x2F; Program bricht ab on Wed, 28 Dec 2005 13:28:13 GMT]]></title><description><![CDATA[<p>zusätzlich zu dem hinweis auf den debugger:</p>
<p>das hier geht nicht</p>
<pre><code>string zeilentext[geszeilen];
</code></pre>
<p>der c++ standard erwartet dort eine konstante. hast du keine, musst du auf dem freispeicher allozieren:</p>
<pre><code>string *zeilentext= new string[geszeilen];
</code></pre>
<p>und entsprechend später wieder freigeben!!</p>
<p>darüber hinaus fehlt der</p>
<pre><code>#include &lt;string&gt;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/951453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/951453</guid><dc:creator><![CDATA[elise]]></dc:creator><pubDate>Wed, 28 Dec 2005 13:28:13 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Codefehler&#x2F;&#x2F; Program bricht ab on Wed, 28 Dec 2005 13:35:12 GMT]]></title><description><![CDATA[<p>ich weiß jetzt wo der fehler liegt</p>
<pre><code class="language-cpp">//lesen 2
    ifstream input2; //inputfilestream objekt
    input2.open(dateiname.c_str(), ios_base::in);//öffne dateiname zum einlesen
    cout &lt;&lt;&quot;geschr2ieben \n&quot;;
    if(!input2)//wenn input fehlschlägt
    {
              cout &lt;&lt; &quot;data-input-error 202\n&quot;;
              return -1;
    }
    while(!input2.eof()) //solange input nicht beim end of file ist
    {        
        int i = 1; //internes zeilenzählen
        char zeichen;  //zwischenspeicher der einzelnden Zeichen (weil auslesen nur einzelnde Zeichen)
        input2.get(zeichen); //einlesen
        cout &lt;&lt;&quot;geschr3ieben \n&quot;;
    :arrow_right:     zeilentext[i]+= zeichen; //schreibt die ausgelesenen Zechen in die zugehöhrige zeile
        cout &lt;&lt;&quot;geschr3ieben \n&quot;;
        if( zeichen == '\n') //wenn ende einer Zeile
        {
            cout &lt;&lt;&quot;geschr3ieben \n&quot;;
            i++;//Zeilenanzahl erhöhen
        }
    }
    input2.close();
    //ende lesen 2
</code></pre>
<p>in der zeile gehts kaput</p>
]]></description><link>https://www.c-plusplus.net/forum/post/951465</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/951465</guid><dc:creator><![CDATA[download123]]></dc:creator><pubDate>Wed, 28 Dec 2005 13:35:12 GMT</pubDate></item><item><title><![CDATA[Reply to C++ Codefehler&#x2F;&#x2F; Program bricht ab on Wed, 28 Dec 2005 13:49:48 GMT]]></title><description><![CDATA[<p>dann siehe oben: leg das array auf den heap!!</p>
<p>zum zweiten: schau dir deinen code durch, er ist sehr unübersichtlich.<br />
versuch mal, die globalen variablen zu vernichten.</p>
<p>so long</p>
]]></description><link>https://www.c-plusplus.net/forum/post/951468</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/951468</guid><dc:creator><![CDATA[elise]]></dc:creator><pubDate>Wed, 28 Dec 2005 13:49:48 GMT</pubDate></item></channel></rss>