<?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[Fehler EAccessViolation]]></title><description><![CDATA[<p>Hallo!<br />
Ich hab ein Problem bei einem Programm. Ich möchte Strings dem Alphabet nach sortieren lassen, aber es kommt immer der Zugriffsfehler EAccessViolation. Ich hab den Teil fett gekennzeichnet.<br />
Hat jemand eine Idee, warum der Fehler kommt?</p>
<p>#pragma argsused<br />
//Klassendeklaration<br />
class IntArraySorter {<br />
private:<br />
int t;<br />
char **arr;<br />
int anzahl;<br />
void tausche(char **a, char **b);<br />
public:<br />
void Eingeben();<br />
void Ausgeben();<br />
void Sortieren();<br />
IntArraySorter();<br />
~IntArraySorter() {}<br />
};</p>
<p>//Methodendefinitionen<br />
IntArraySorter :: IntArraySorter()<br />
{<br />
arr = NULL;<br />
}</p>
<p>//Eingabe der Anzahl Wörter, die sortiert werden sollenund der Wörter<br />
void IntArraySorter :: Eingeben()<br />
{<br />
char text[100];</p>
<p>cout &lt;&lt;&quot;\nWie viele Woerter wollen Sie sortieren?&quot;;<br />
cin &gt;&gt; anzahl;</p>
<p>for (t=0; t &lt; anzahl; t++)<br />
{<br />
//Eingabe der Wörter und Speichern im String<br />
<strong>arr[t] = new char[strlen(text) +1];</strong><br />
strcpy(arr[t], text);<br />
cin &gt;&gt; arr[t];<br />
}<br />
}</p>
<p>//Ausgabe der Wörter vor und nach dem Sortieren<br />
void IntArraySorter :: Ausgeben()<br />
{<br />
for (t=0; t &lt; anzahl; t++)<br />
cout &lt;&lt;arr[t]&lt;&lt;&quot; &quot;;<br />
cout &lt;&lt;&quot;\n&quot;;<br />
}</p>
<p>//Sortieren der Wörter nach dem Alphabet<br />
void IntArraySorter :: Sortieren()<br />
{<br />
for (int anzahl = t-1; anzahl &gt; 0; anzahl--)<br />
{<br />
for (t=0; t &lt; anzahl; t++)<br />
{<br />
strcmp (arr[t], arr[t+1]);<br />
if (arr[t] &gt; arr[t+1])<br />
tausche(&amp;arr[t], &amp;arr[t+1]);<br />
}<br />
}<br />
}</p>
<p>//Tauschen der Wörter, wenn die Reihenfolge falsch ist<br />
void IntArraySorter :: tausche(char **a, char **b)<br />
{<br />
int *tmp;<br />
*tmp = **a;<br />
**a = **b;<br />
**b = *tmp;<br />
}</p>
<p>//Hauptprogramm<br />
void main()<br />
{<br />
IntArraySorter ias;</p>
<p>ias.Eingeben();<br />
ias.Ausgeben();</p>
<p>ias.Sortieren();<br />
ias.Ausgeben();</p>
<p>getch();<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/135482/fehler-eaccessviolation</link><generator>RSS for Node</generator><lastBuildDate>Sat, 29 Aug 2026 00:14:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/135482.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 02 Feb 2006 14:08:13 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Fehler EAccessViolation on Thu, 02 Feb 2006 14:08:13 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Ich hab ein Problem bei einem Programm. Ich möchte Strings dem Alphabet nach sortieren lassen, aber es kommt immer der Zugriffsfehler EAccessViolation. Ich hab den Teil fett gekennzeichnet.<br />
Hat jemand eine Idee, warum der Fehler kommt?</p>
<p>#pragma argsused<br />
//Klassendeklaration<br />
class IntArraySorter {<br />
private:<br />
int t;<br />
char **arr;<br />
int anzahl;<br />
void tausche(char **a, char **b);<br />
public:<br />
void Eingeben();<br />
void Ausgeben();<br />
void Sortieren();<br />
IntArraySorter();<br />
~IntArraySorter() {}<br />
};</p>
<p>//Methodendefinitionen<br />
IntArraySorter :: IntArraySorter()<br />
{<br />
arr = NULL;<br />
}</p>
<p>//Eingabe der Anzahl Wörter, die sortiert werden sollenund der Wörter<br />
void IntArraySorter :: Eingeben()<br />
{<br />
char text[100];</p>
<p>cout &lt;&lt;&quot;\nWie viele Woerter wollen Sie sortieren?&quot;;<br />
cin &gt;&gt; anzahl;</p>
<p>for (t=0; t &lt; anzahl; t++)<br />
{<br />
//Eingabe der Wörter und Speichern im String<br />
<strong>arr[t] = new char[strlen(text) +1];</strong><br />
strcpy(arr[t], text);<br />
cin &gt;&gt; arr[t];<br />
}<br />
}</p>
<p>//Ausgabe der Wörter vor und nach dem Sortieren<br />
void IntArraySorter :: Ausgeben()<br />
{<br />
for (t=0; t &lt; anzahl; t++)<br />
cout &lt;&lt;arr[t]&lt;&lt;&quot; &quot;;<br />
cout &lt;&lt;&quot;\n&quot;;<br />
}</p>
<p>//Sortieren der Wörter nach dem Alphabet<br />
void IntArraySorter :: Sortieren()<br />
{<br />
for (int anzahl = t-1; anzahl &gt; 0; anzahl--)<br />
{<br />
for (t=0; t &lt; anzahl; t++)<br />
{<br />
strcmp (arr[t], arr[t+1]);<br />
if (arr[t] &gt; arr[t+1])<br />
tausche(&amp;arr[t], &amp;arr[t+1]);<br />
}<br />
}<br />
}</p>
<p>//Tauschen der Wörter, wenn die Reihenfolge falsch ist<br />
void IntArraySorter :: tausche(char **a, char **b)<br />
{<br />
int *tmp;<br />
*tmp = **a;<br />
**a = **b;<br />
**b = *tmp;<br />
}</p>
<p>//Hauptprogramm<br />
void main()<br />
{<br />
IntArraySorter ias;</p>
<p>ias.Eingeben();<br />
ias.Ausgeben();</p>
<p>ias.Sortieren();<br />
ias.Ausgeben();</p>
<p>getch();<br />
}</p>
]]></description><link>https://www.c-plusplus.net/forum/post/983989</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/983989</guid><dc:creator><![CDATA[Nina_911]]></dc:creator><pubDate>Thu, 02 Feb 2006 14:08:13 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler EAccessViolation on Thu, 02 Feb 2006 14:51:02 GMT]]></title><description><![CDATA[<p>Weil du auf arr via arr[t] zugreifst aber arr immer noch NULL ist. du musst vorher via arr = new char*[anzahl_strings]; speicher für das array bereitstellen</p>
<p>und den dann später im Destruktor via</p>
<pre><code class="language-cpp">if(arr)
  {
     for( int i = 0; i &lt; anzahl; ++i )
       delete[] arr[i];
     delete[] arr;
  }
</code></pre>
<p>wieder freigeben.</p>
<p>BR<br />
evilissimo</p>
<p>//Edit quote entfernt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/984041</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/984041</guid><dc:creator><![CDATA[evilissimo]]></dc:creator><pubDate>Thu, 02 Feb 2006 14:51:02 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler EAccessViolation on Fri, 03 Feb 2006 08:53:57 GMT]]></title><description><![CDATA[<p>Danke, der Fehler ist jetzt weg. Nur funktioniert das mit dem Sortieren leider nicht. Irgendwas beim Vergleichen der Strings stimmt noch nicht</p>
]]></description><link>https://www.c-plusplus.net/forum/post/984762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/984762</guid><dc:creator><![CDATA[Nina_911]]></dc:creator><pubDate>Fri, 03 Feb 2006 08:53:57 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler EAccessViolation on Fri, 03 Feb 2006 08:59:48 GMT]]></title><description><![CDATA[<p>Ja, C-Strings (char*) vergleicht man auch nicht mit &lt; (das vergleicht nur die Speicher-Adressen, an denen die Strings abgelegt sind), sondern mit <a href="http://man.cx/strcmp" rel="nofollow">man: strcmp</a>.</p>
<p>(Kleiner Tip: In C++ fährst du übrigens besser, wenn du die STL-Klassen wie std::string und std::vector statt stumpfer Pointer-Arithmetik verwendest)</p>
<p>PS: Und deine Tausche-Methode sieht auch nicht so auch, als ob sie das richtige macht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/984766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/984766</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Fri, 03 Feb 2006 08:59:48 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler EAccessViolation on Fri, 03 Feb 2006 09:16:35 GMT]]></title><description><![CDATA[<p>okay, die tausche- Methode tauscht nur einen Buchstaben wenn ich den Code ändern in<br />
if(arr[t][0] &gt; arr[t+1][0])<br />
tausche(...)</p>
<p>Aber wie lös ich die tausche- Methode aus, wenn ich nur strcmp nehme? Das hab ich ja schon drin, aber ich brauch dann doch ne If-Anweisung oder nicht?<br />
Das mit den LST- Anweisungen hatten wir noch nicht... Schule ist eben etwas rückständig :p</p>
]]></description><link>https://www.c-plusplus.net/forum/post/984775</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/984775</guid><dc:creator><![CDATA[Nina_911]]></dc:creator><pubDate>Fri, 03 Feb 2006 09:16:35 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler EAccessViolation on Fri, 03 Feb 2006 09:17:18 GMT]]></title><description><![CDATA[<p>ich meinet STL- Anweisung *g*</p>
]]></description><link>https://www.c-plusplus.net/forum/post/984776</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/984776</guid><dc:creator><![CDATA[Nina_911]]></dc:creator><pubDate>Fri, 03 Feb 2006 09:17:18 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler EAccessViolation on Fri, 03 Feb 2006 09:25:16 GMT]]></title><description><![CDATA[<p>Erstens: Die Tausche-Funktion sollte die kompletten Zeiger umbiegen:</p>
<pre><code class="language-cpp">void tausche(char**a,char**b)
{
  char* tmp=*a;
  *a=*b;
  *b=tmp;
}
</code></pre>
<p>Zweitens: Noch einmal: C-Strings vergleicht man mit strcmp:</p>
<pre><code class="language-cpp">if(strcmp(arr[t],arr[t+1]&gt;0)
  tausche(arr[t],arr[t+1]);
</code></pre>
<p>Drittens: Die STL bietet mehr als nur &quot;Anweisungen&quot; - das ist eine komplexe Sammlung aus Containerklassen, Algorithmen, etc.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/984780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/984780</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 03 Feb 2006 09:25:16 GMT</pubDate></item><item><title><![CDATA[Reply to Fehler EAccessViolation on Fri, 03 Feb 2006 09:35:23 GMT]]></title><description><![CDATA[<p>danke für die Hilfe. Endlich funktioniert es</p>
]]></description><link>https://www.c-plusplus.net/forum/post/984792</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/984792</guid><dc:creator><![CDATA[Nina_911]]></dc:creator><pubDate>Fri, 03 Feb 2006 09:35:23 GMT</pubDate></item></channel></rss>