<?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[Datei beschreiben]]></title><description><![CDATA[<p>hiho,</p>
<p>habe heute (teils erfolgreich) versucht einträge in einer .xml datei zu erweitern mit hilfe von fstream.<br />
Das ganze klappt mittlerweile so wie ich es will das einzige problem ist ,dass sich das programm dannach aufhängt bzw lange im &quot;leerlauf&quot; bleibt.</p>
<p>Also die .xml datei sieht nach dem ausführen genau so aus wie ich es will also müsste ja eigentlich alles geklappt haben.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;cstdio&gt;
#include &lt;stdio.h&gt;
//#include &lt;windows.h&gt;

using namespace std;

ifstream::pos_type size;
char * memblock;

int main (int argc, char **argv)
{

    int index = 0;
    char FILE[256];
    cout&lt;&lt;&quot;\nFilepath: &quot;;
    cin.getline(FILE,256);
    char newentry[256] = &quot;&lt;item id=\&quot;12742842027041\&quot; char=\&quot;Dex\&quot; time=\&quot;Wed 05/19/10 17:50:02\&quot; quality=\&quot;6\&quot; ethereal=\&quot;0\&quot; mode=\&quot;1\&quot; name=\&quot;juhu\&quot; ilvl=\&quot;99\&quot; location=\&quot;The Worldstone Chamber\&quot; type=\&quot;388\&quot; typedesc=\&quot;Battle Boots\&quot;&gt;c++&lt;/item&gt;\r\n&quot;;

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

    ifstream file (FILE, ios::in|ios::binary|ios::ate);
    if (file.is_open())
    {
        size = int(file.tellg()) + strlen(newentry); //// memblock erweitern
        memblock = new char [size];
        file.seekg (0, ios::beg);
        file.read (memblock, size);

        file.close();

        cout&lt;&lt;size&lt;&lt;endl;

        ofstream filew (FILE, ios::in|ios::binary|ios::ate|ios::trunc);

        for (int j = int(size); j&gt;113; j--)

        {
            memblock[j+strlen(newentry)] = memblock[j];
        }

        for (int i = 114; i&lt;(114+int(strlen(newentry)));i++)

        {

            memblock[i] = newentry[index];
            index++;

        }

        filew.write(memblock, size);
        filew.close();
        delete[] memblock;
    }

    else

    {
        cout &lt;&lt; &quot;\nUnable to open file&quot;;
    }

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/269884/datei-beschreiben</link><generator>RSS for Node</generator><lastBuildDate>Mon, 31 Aug 2026 00:19:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/269884.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 02 Jul 2010 17:58:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Datei beschreiben on Fri, 02 Jul 2010 18:02:54 GMT]]></title><description><![CDATA[<p>hiho,</p>
<p>habe heute (teils erfolgreich) versucht einträge in einer .xml datei zu erweitern mit hilfe von fstream.<br />
Das ganze klappt mittlerweile so wie ich es will das einzige problem ist ,dass sich das programm dannach aufhängt bzw lange im &quot;leerlauf&quot; bleibt.</p>
<p>Also die .xml datei sieht nach dem ausführen genau so aus wie ich es will also müsste ja eigentlich alles geklappt haben.</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;cstdio&gt;
#include &lt;stdio.h&gt;
//#include &lt;windows.h&gt;

using namespace std;

ifstream::pos_type size;
char * memblock;

int main (int argc, char **argv)
{

    int index = 0;
    char FILE[256];
    cout&lt;&lt;&quot;\nFilepath: &quot;;
    cin.getline(FILE,256);
    char newentry[256] = &quot;&lt;item id=\&quot;12742842027041\&quot; char=\&quot;Dex\&quot; time=\&quot;Wed 05/19/10 17:50:02\&quot; quality=\&quot;6\&quot; ethereal=\&quot;0\&quot; mode=\&quot;1\&quot; name=\&quot;juhu\&quot; ilvl=\&quot;99\&quot; location=\&quot;The Worldstone Chamber\&quot; type=\&quot;388\&quot; typedesc=\&quot;Battle Boots\&quot;&gt;c++&lt;/item&gt;\r\n&quot;;

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

    ifstream file (FILE, ios::in|ios::binary|ios::ate);
    if (file.is_open())
    {
        size = int(file.tellg()) + strlen(newentry); //// memblock erweitern
        memblock = new char [size];
        file.seekg (0, ios::beg);
        file.read (memblock, size);

        file.close();

        cout&lt;&lt;size&lt;&lt;endl;

        ofstream filew (FILE, ios::in|ios::binary|ios::ate|ios::trunc);

        for (int j = int(size); j&gt;113; j--)

        {
            memblock[j+strlen(newentry)] = memblock[j];
        }

        for (int i = 114; i&lt;(114+int(strlen(newentry)));i++)

        {

            memblock[i] = newentry[index];
            index++;

        }

        filew.write(memblock, size);
        filew.close();
        delete[] memblock;
    }

    else

    {
        cout &lt;&lt; &quot;\nUnable to open file&quot;;
    }

    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1920597</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920597</guid><dc:creator><![CDATA[lekos]]></dc:creator><pubDate>Fri, 02 Jul 2010 18:02:54 GMT</pubDate></item><item><title><![CDATA[Reply to Datei beschreiben on Fri, 02 Jul 2010 18:13:19 GMT]]></title><description><![CDATA[<p>Schau dir mal diese Zeile an:</p>
<pre><code class="language-cpp">memblock = new char [size];
</code></pre>
<p>Hier reservierst du Speicher der Größe size, die du später auch mal mit cout ausgibst.<br />
Und nun schau dir mal memblock in deinen zwei Schleifen an:</p>
<pre><code class="language-cpp">[...]
memblock[j+strlen(newentry)] = memblock[j];
[...}
memblock[i] = newentry[index];
[...]
</code></pre>
<p>Hier insbesondere den Index. Lass ihn dir pro Schleifendurchlauf mal ausgeben.<br />
<img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> Du scheinst hier auf Speicher zuzugreifen, der nicht durch dein Programm gefordert wurde</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920601</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920601</guid><dc:creator><![CDATA[BasicMan01]]></dc:creator><pubDate>Fri, 02 Jul 2010 18:13:19 GMT</pubDate></item><item><title><![CDATA[Reply to Datei beschreiben on Fri, 02 Jul 2010 18:23:01 GMT]]></title><description><![CDATA[<p>hm ja klingt einleuchtend ,dass es sich um einen Fehler bei der Speicherreservierung handelt war auch mein Verdacht. Jedoch ist mein Wissen da zu dünn angesiedelt um den Fehler zu finden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>aber ich hab doch eigentlich genug speicher reserviert oder? habe ja die variable size extra erhöht:</p>
<p>size = int(file.tellg()) + strlen(newentry);</p>
<p>oder wie fordere ich denn genau soviel speicher an ,dass der neue eintrag auch reinpasst?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920602</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920602</guid><dc:creator><![CDATA[lekos]]></dc:creator><pubDate>Fri, 02 Jul 2010 18:23:01 GMT</pubDate></item><item><title><![CDATA[Reply to Datei beschreiben on Fri, 02 Jul 2010 18:26:24 GMT]]></title><description><![CDATA[<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> also ich hab net gesagt, dass du zu wenig Speicher bereitgestellt hast.</p>
<p>Beispiel:</p>
<pre><code class="language-cpp">size = int(file.tellg()) + strlen(newentry);
// nehmen wir hier an, size = 200 + 210

// j beginnt also bei 410 (da 200 + 210)
for (int j = int(size); j&gt;113; j--)
{
    // du greifst auf 410 + 210 (denn newentry ist oben schon 210
    memblock[j+strlen(newentry)] = memblock[j];
}
</code></pre>
<p>Ein Königreich für einen Schreibtischtest <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920607</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920607</guid><dc:creator><![CDATA[BasicMan01]]></dc:creator><pubDate>Fri, 02 Jul 2010 18:26:24 GMT</pubDate></item><item><title><![CDATA[Reply to Datei beschreiben on Fri, 02 Jul 2010 18:34:51 GMT]]></title><description><![CDATA[<p>tausend dank auf den fehler wär ich wahrscheinlich nicht gekommen obwohl er eigentlich sehr offensichtlich ist <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<pre><code>for (int j = int(size); j&gt;113; j--)

        {

            memblock[j] = memblock[j-strlen(newentry)];

        }
</code></pre>
<p>so muss es sein jetzt klappts danke vielmals <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1920611</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1920611</guid><dc:creator><![CDATA[lekos]]></dc:creator><pubDate>Fri, 02 Jul 2010 18:34:51 GMT</pubDate></item></channel></rss>