<?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[Mit Char array Datei auslesen und ausgeben]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich versuche gerade den Inhalt einer einfachen txt. Datei auszugeben und in einem Char Array zu schreiben, was im Prinzip auch klappt.<br />
In der Datei sind die Einstellungen geschrieben, die man später aus dem array bekommen kann.<br />
Das sieht so aus :</p>
<pre><code class="language-cpp">Settings.txt Datei :

Game_mode = 2
Set_FPS_Max = 30
</code></pre>
<p>Mein Programm kann, wie schon gesagt, eigentlich diese Aufgabe gut erfüllen, wobei aber immer die letzten beiden character wiederholt ans Ende angehängt werden.<br />
<a href="http://img202.imageshack.us/img202/93/textauslesen.png" rel="nofollow">http://img202.imageshack.us/img202/93/textauslesen.png</a><br />
In diesem Fall wird die 30 jeweils zweimal im array und beim lesen ausgegeben.</p>
<p>Mein Programm sieh bisher so aus :</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;cstdlib&gt;
//...
int main()
{

//...
ReadTheSettings();
//...
return 0;
}

int ReadTheSettings()
{
    // Create the reading object.
    ifstream Settingsreader;

    // Open the txt file and check for errors.
    cout &lt;&lt; &quot;Checking for errors&quot;;
    Settingsreader.open(&quot;Settings.txt&quot;);
    if (!Settingsreader.is_open())
        exit(EXIT_FAILURE);
    cout &lt;&lt; &quot; ... done.\n&quot;;

    cout &lt;&lt; &quot;Reading the data&quot;;
    // Create the char array which holds all informations from the text.
    // The string is going to be used to check for variables in the file.
    char TextInput[50];   // Beinhaltet das Wort
    char Checkobject[1024]; // Beinhaltet den gesamten Inhalt.

    // Wir rbauchen einen eigenen Index-Zähler für Checkobject, da die untere For schleife den
    // Inhalt des arrays bei jedem neuen Wort überschreiben würde.
    unsigned int Count=0;

    // Solange wir nicht das Ende der Datei erreicht haben.
    while (Settingsreader.good())
    {
        // Füge das nächste Wort dem Array TextInput hinzu.
        Settingsreader &gt;&gt; TextInput;

        // Schreibe alle Daten im Anhang des Checkobject.
        for (int i=0;i &lt; strlen(TextInput);)
        {
            // Hier sieht man deutlich wie Count genutzt wird :
            Checkobject[Count] = TextInput[i];
            i++;
            Count++;

        } // end for.
        // Wenn der letzte character des arrays eine Zahl enthält wissen wir ,
        // das es sich hier um einen Zeilenumbruch handelt.
        if (Checkobject[Count - 1] == '0' ||
            Checkobject[Count - 1] == '1' ||
            Checkobject[Count - 1] == '2' ||
            Checkobject[Count - 1] == '3' ||
            Checkobject[Count - 1] == '4' ||
            Checkobject[Count - 1] == '5' ||
            Checkobject[Count - 1] == '6' ||
            Checkobject[Count - 1] == '7' ||
            Checkobject[Count - 1] == '8' ||
            Checkobject[Count - 1] == '9')
        Checkobject[Count] = '\n';
        // Alles andere bedeutet wir haben eine Leerstelle.
        else
        Checkobject[Count] = ' ';

        // Da wir in der if/else Bedingung auf dem array geschrieben haben müssen wir, 
        // bevor wir zurück auf die for-schleife kommen, den index erhöhen.
        Count++;

        cout &lt;&lt;TextInput;

    }

    cout &lt;&lt; &quot; ... done\n\n==============================\nOutput :\n\n&quot;;

    // Output schleife .
    for (int ii = 0;ii &lt; strlen(Checkobject);ii++)
    {
        cout &lt;&lt; Checkobject[ii] ;
    }

    cout &lt;&lt; &quot;\n==============================\n&quot;;

    return 0 ;
}
</code></pre>
<p>Ich hoffe der Code is verständlich genug.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/266855/mit-char-array-datei-auslesen-und-ausgeben</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 19:00:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/266855.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 15 May 2010 14:00:04 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Mit Char array Datei auslesen und ausgeben on Sat, 15 May 2010 14:00:04 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>Ich versuche gerade den Inhalt einer einfachen txt. Datei auszugeben und in einem Char Array zu schreiben, was im Prinzip auch klappt.<br />
In der Datei sind die Einstellungen geschrieben, die man später aus dem array bekommen kann.<br />
Das sieht so aus :</p>
<pre><code class="language-cpp">Settings.txt Datei :

Game_mode = 2
Set_FPS_Max = 30
</code></pre>
<p>Mein Programm kann, wie schon gesagt, eigentlich diese Aufgabe gut erfüllen, wobei aber immer die letzten beiden character wiederholt ans Ende angehängt werden.<br />
<a href="http://img202.imageshack.us/img202/93/textauslesen.png" rel="nofollow">http://img202.imageshack.us/img202/93/textauslesen.png</a><br />
In diesem Fall wird die 30 jeweils zweimal im array und beim lesen ausgegeben.</p>
<p>Mein Programm sieh bisher so aus :</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;cstdlib&gt;
//...
int main()
{

//...
ReadTheSettings();
//...
return 0;
}

int ReadTheSettings()
{
    // Create the reading object.
    ifstream Settingsreader;

    // Open the txt file and check for errors.
    cout &lt;&lt; &quot;Checking for errors&quot;;
    Settingsreader.open(&quot;Settings.txt&quot;);
    if (!Settingsreader.is_open())
        exit(EXIT_FAILURE);
    cout &lt;&lt; &quot; ... done.\n&quot;;

    cout &lt;&lt; &quot;Reading the data&quot;;
    // Create the char array which holds all informations from the text.
    // The string is going to be used to check for variables in the file.
    char TextInput[50];   // Beinhaltet das Wort
    char Checkobject[1024]; // Beinhaltet den gesamten Inhalt.

    // Wir rbauchen einen eigenen Index-Zähler für Checkobject, da die untere For schleife den
    // Inhalt des arrays bei jedem neuen Wort überschreiben würde.
    unsigned int Count=0;

    // Solange wir nicht das Ende der Datei erreicht haben.
    while (Settingsreader.good())
    {
        // Füge das nächste Wort dem Array TextInput hinzu.
        Settingsreader &gt;&gt; TextInput;

        // Schreibe alle Daten im Anhang des Checkobject.
        for (int i=0;i &lt; strlen(TextInput);)
        {
            // Hier sieht man deutlich wie Count genutzt wird :
            Checkobject[Count] = TextInput[i];
            i++;
            Count++;

        } // end for.
        // Wenn der letzte character des arrays eine Zahl enthält wissen wir ,
        // das es sich hier um einen Zeilenumbruch handelt.
        if (Checkobject[Count - 1] == '0' ||
            Checkobject[Count - 1] == '1' ||
            Checkobject[Count - 1] == '2' ||
            Checkobject[Count - 1] == '3' ||
            Checkobject[Count - 1] == '4' ||
            Checkobject[Count - 1] == '5' ||
            Checkobject[Count - 1] == '6' ||
            Checkobject[Count - 1] == '7' ||
            Checkobject[Count - 1] == '8' ||
            Checkobject[Count - 1] == '9')
        Checkobject[Count] = '\n';
        // Alles andere bedeutet wir haben eine Leerstelle.
        else
        Checkobject[Count] = ' ';

        // Da wir in der if/else Bedingung auf dem array geschrieben haben müssen wir, 
        // bevor wir zurück auf die for-schleife kommen, den index erhöhen.
        Count++;

        cout &lt;&lt;TextInput;

    }

    cout &lt;&lt; &quot; ... done\n\n==============================\nOutput :\n\n&quot;;

    // Output schleife .
    for (int ii = 0;ii &lt; strlen(Checkobject);ii++)
    {
        cout &lt;&lt; Checkobject[ii] ;
    }

    cout &lt;&lt; &quot;\n==============================\n&quot;;

    return 0 ;
}
</code></pre>
<p>Ich hoffe der Code is verständlich genug.</p>
<p>mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897550</guid><dc:creator><![CDATA[Demian02]]></dc:creator><pubDate>Sat, 15 May 2010 14:00:04 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Char array Datei auslesen und ausgeben on Sat, 15 May 2010 14:09:00 GMT]]></title><description><![CDATA[<p>Dieser Thread wurde von Moderator/in <a href="http://www.c-plusplus.net/forum/profile-var-mode-is-viewprofile-and-u-is-18363.html" rel="nofollow">Jochen Kalmbach</a> aus dem Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-58.html" rel="nofollow">C++/CLI mit .NET</a> in das Forum <a href="http://www.c-plusplus.net/forum/viewforum-var-f-is-15.html" rel="nofollow">C++</a> verschoben.</p>
<p>Im Zweifelsfall bitte auch folgende Hinweise beachten:<br />
<a href="http://www.c-plusplus.net/forum/viewtopic-var-t-is-39405.html" rel="nofollow">C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?</a></p>
<p><em>Dieses Posting wurde automatisch erzeugt.</em></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897552</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897552</guid><dc:creator><![CDATA[C++ Forumbot]]></dc:creator><pubDate>Sat, 15 May 2010 14:09:00 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Char array Datei auslesen und ausgeben on Sat, 15 May 2010 14:12:15 GMT]]></title><description><![CDATA[<p>Achja, das große Problem ist:<br />
Wenn ich nach der Zahl für die FPS-Variable suche, bekomme ich die Zahl 3030 als Variable.<br />
Aber diese Zahl ist eher unbrauchbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897553</guid><dc:creator><![CDATA[Demian02]]></dc:creator><pubDate>Sat, 15 May 2010 14:12:15 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Char array Datei auslesen und ausgeben on Sat, 15 May 2010 15:03:30 GMT]]></title><description><![CDATA[<p>Du machst da einen Logikfehler:<br />
Erst prüfst du, ob alles in Ordnung ist. Dann liest du aus der Datei. Was ist, wenn dabei etwas schiefgeht, z.B. das Dateiende erreicht wird? Du arbeitest dann trotzdem weiter und dadurch kommt Mist heraus.</p>
<p>Die Prüfungslogik muss umgekehrt aussehen. Dazu könntest du beispielsweise die while-Schleife so formulieren:</p>
<pre><code class="language-cpp">while (Settingsreader &gt;&gt; TextInput)
{
  // Verarbeitung von TextInput
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1897570</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897570</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 15 May 2010 15:03:30 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Char array Datei auslesen und ausgeben on Sat, 15 May 2010 15:21:14 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Du machst da einen Logikfehler:<br />
Erst prüfst du, ob alles in Ordnung ist. Dann liest du aus der Datei. Was ist, wenn dabei etwas schiefgeht, z.B. das Dateiende erreicht wird? Du arbeitest dann trotzdem weiter und dadurch kommt Mist heraus.</p>
<p>Die Prüfungslogik muss umgekehrt aussehen. Dazu könntest du beispielsweise die while-Schleife so formulieren:</p>
<pre><code class="language-cpp">while (Settingsreader &gt;&gt; TextInput)
{
  // Verarbeitung von TextInput
}
</code></pre>
</blockquote>
<p>Das verstehe ich nicht.<br />
Ich dachte eine while Schleife bricht dann ab, wenn die Bedingung nicht mehr erfüllt ist und das unabhängig vom Ort, wo sich das Programm gerade befindet.<br />
Und da die Bedingung</p>
<pre><code class="language-cpp">while (Settingsreader.good())
</code></pre>
<p>darauf achtet sollte doch nach dem Ende keine Datei aus dem Textinput in den Settingsreader geraten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897579</guid><dc:creator><![CDATA[Demian02]]></dc:creator><pubDate>Sat, 15 May 2010 15:21:14 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Char array Datei auslesen und ausgeben on Sat, 15 May 2010 15:28:07 GMT]]></title><description><![CDATA[<p>Demian02 schrieb:</p>
<blockquote>
<p>Das verstehe ich nicht.<br />
Ich dachte eine while Schleife bricht dann ab, wenn die Bedingung nicht mehr erfüllt ist und das unabhängig vom Ort, wo sich das Programm gerade befindet.</p>
</blockquote>
<p>Nein. Beschäftige dich noch einmal mit Kontrollstrukturen und wie sie genau funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897584</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 15 May 2010 15:28:07 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Char array Datei auslesen und ausgeben on Sat, 15 May 2010 16:29:03 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p>Demian02 schrieb:</p>
<blockquote>
<p>Das verstehe ich nicht.<br />
Ich dachte eine while Schleife bricht dann ab, wenn die Bedingung nicht mehr erfüllt ist und das unabhängig vom Ort, wo sich das Programm gerade befindet.</p>
</blockquote>
<p>Nein. Beschäftige dich noch einmal mit Kontrollstrukturen und wie sie genau funktionieren.</p>
</blockquote>
<p>Hmm... Warum tauchen mit diesem Code keine doppelte oder zusätzliche Zeichen auf?</p>
<pre><code class="language-cpp">while  (Settingsreader &gt;&gt; TextInput)
    {
        cout &lt;&lt; TextInput;
        cout &lt;&lt; endl;
    }
</code></pre>
<p>Aber dieser Code :</p>
<pre><code class="language-cpp">while  (Settingsreader &gt;&gt; TextInput)
    {
        for (int i=0;i &lt; strlen(TextInput) &amp;&amp; Settingsreader.good() ;Count++ &amp;&amp; i++)
        {
            // Hier sieht man deutlich wie Count genutzt wird :

            Checkobject[Count] = TextInput[i];

        } // end for.
    }
</code></pre>
<p>Ich meine, der einzige Unterschied besteht nur darin, dass ich die Daten nicht ausgeben sondern in einen anderen array konvertiere.<br />
Es kann dann doch nicht daran liegen, dass nur durch das konvertieren sonderbare oder doppelte Zeichen auftauchen?<br />
Das kann doch unmöglich der Grund dafür sein.</p>
<p>Hier nochmal die Ausgabe der beiden Codeabschnitte für das Verständnis:<br />
<a href="http://img243.imageshack.us/g/gutercode.png/" rel="nofollow">http://img243.imageshack.us/g/gutercode.png/</a><br />
(Das rechte Bild ist der erste Code und das linke Bild ist der zweite Code.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897613</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897613</guid><dc:creator><![CDATA[Demian02]]></dc:creator><pubDate>Sat, 15 May 2010 16:29:03 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Char array Datei auslesen und ausgeben on Sat, 15 May 2010 18:44:49 GMT]]></title><description><![CDATA[<p><code>Count++ &amp;&amp; i++</code> Das macht ganz was anderes als du denkst. Mach daraus <code>Count++ , i++</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897643</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897643</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Sat, 15 May 2010 18:44:49 GMT</pubDate></item><item><title><![CDATA[Reply to Mit Char array Datei auslesen und ausgeben on Sun, 16 May 2010 13:12:18 GMT]]></title><description><![CDATA[<p>SeppJ schrieb:</p>
<blockquote>
<p><code>Count++ &amp;&amp; i++</code> Das macht ganz was anderes als du denkst. Mach daraus <code>Count++ , i++</code> .</p>
</blockquote>
<p>So,ich glaube ich habs endlich hinbekommen.<br />
Nichts taucht zweimal auf und sonderbare Zeichen bleiben auch weg.</p>
<p>Ich leere zunächst, nachdem ich beide Arrays erstelle, den gesamten array von Checkobject.<br />
Beim Konvertieren achte ich jedes mal, ob auch wirklich das Ende nicht erreicht wurde.<br />
Mein Code sieht nun folgendermaßen aus :</p>
<pre><code class="language-cpp">int ReadTheSettings()
{

// ...
// Datei öffnen
// ...

char TextInput[50];   // Beinhaltet das Wort
char Checkobject[1024]; // Beinhaltet den gesamten Inhalt.

// Jetzt leere den gesamten Inhalt von Checkobject.
    {
        // Erstelle einen char-zeiger.
        char *chrptr = Checkobject;
        // Leere nun den gesamten Inhalt des Arrays.
        for(int index=0; index&lt;1024; index++)
        {
            *chrptr = 0;
            chrptr++;
        }
    }

    // Wir rbauchen einen eigenen Index-Zähler für Checkobject, da die untere For schleife den
    // Inhalt des arrays bei jedem neuen Wort überschreiben würde.
    unsigned int Count=0;

    // Füge das nächste Wort dem Array TextInput hinzu.
    while (Settingsreader &gt;&gt; TextInput)
    {

        // Schreibe alle Daten im Anhang des Checkobject, solange
        // kein Ende erreicht wurde.
        for (int i=0;i &lt; strlen(TextInput) ;i++, Count++)
        {
            if (Settingsreader.good())
            {
                // Hier sieht man deutlich wie Count genutzt wird :
                Checkobject[Count] = TextInput[i];
            }

        } // end for.

        // Nun testen wir ob das letzte Element von Checkobject eine Zahl beinhaltet.
        if (Checkobject[Count - 1] == '0' ||
            Checkobject[Count - 1] == '1' ||
            Checkobject[Count - 1] == '2' ||
            Checkobject[Count - 1] == '3' ||
            Checkobject[Count - 1] == '4' ||
            Checkobject[Count - 1] == '5' ||
            Checkobject[Count - 1] == '6' ||
            Checkobject[Count - 1] == '7' ||
            Checkobject[Count - 1] == '8' ||
            Checkobject[Count - 1] == '9')
        Checkobject[Count] = '\n';
        // Alles andere bedeutet wir haben eine Leerstelle.
        else
        Checkobject[Count] = ' ';

        // Da wir in der if/else Bedingung auf dem array geschrieben haben müssen wir,
        // bevor wir zurück auf die for-schleife kommen, den index erhöhen.
        Count++;

        cout &lt;&lt;TextInput;

    }

    cout &lt;&lt; &quot; ... done\n\n==============================\nOutput :\n\n&quot;;

    // Output schleife .
    for (int Index = 0;Index &lt; strlen(Checkobject);Index++)
    {
        cout &lt;&lt; Checkobject[Index] ;
    }

    cout &lt;&lt; &quot;\n==============================\n&quot;;

    return 0 ;
}
</code></pre>
<p>Danke SeppJ, ohne dich würde es Wochen dauern bis ich es hinbekommen hätte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1897895</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1897895</guid><dc:creator><![CDATA[Demian02]]></dc:creator><pubDate>Sun, 16 May 2010 13:12:18 GMT</pubDate></item></channel></rss>