<?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[Chars mittels qsort sortieren]]></title><description><![CDATA[<p>Ich möchte ein char Array mittels der STL Funktion qsort sortieren. Meine Vergleichsfunktion CmpFunc gibt anscheinend die falschen Werte zurück. Seht Ihr einen Fehler. Hier der Code:</p>
<pre><code class="language-cpp">#include &lt;stdlib.h&gt;
#include &lt;iostream&gt;

using namespace std;

int CmpFunc (const void* _str1, const void* _str2)
{

    const char* str1 = (const char*) _str1;
    const char* str2 = (const char*) _str2;
    if ( str1 &lt; str2 )
        return -1;
    if ( str1 == str2 )
        return 0;
    else return 1;

}

void QSortExample()
{
     int c;
     char *sArray[] = {&quot;eins&quot;, &quot;zwei&quot;, &quot;drei&quot;, &quot;vier&quot;, &quot;fuenf&quot;, &quot;sechs&quot;, 
                       &quot;sieben&quot;, &quot;acht&quot;, &quot;neun&quot;, &quot;zehn&quot;};                       
     qsort((void*)sArray, 10, sizeof(sArray[0]), CmpFunc);
     cout &lt;&lt; &quot;The first ten elements of the sorted field are ...&quot; &lt;&lt; endl;
     for(c=0;c&lt;10;c++)
          cout &lt;&lt; &quot;element #&quot; &lt;&lt; c+1 &lt;&lt; &quot; contains &quot; &lt;&lt; sArray[c] &lt;&lt; endl;
     cout &lt;&lt; endl;
}

int main()
{
    QSortExample();
    system(&quot;pause&quot;);
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/134187/chars-mittels-qsort-sortieren</link><generator>RSS for Node</generator><lastBuildDate>Fri, 28 Aug 2026 08:35:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/134187.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 24 Jan 2006 12:04:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Chars mittels qsort sortieren on Tue, 24 Jan 2006 12:04:09 GMT]]></title><description><![CDATA[<p>Ich möchte ein char Array mittels der STL Funktion qsort sortieren. Meine Vergleichsfunktion CmpFunc gibt anscheinend die falschen Werte zurück. Seht Ihr einen Fehler. Hier der Code:</p>
<pre><code class="language-cpp">#include &lt;stdlib.h&gt;
#include &lt;iostream&gt;

using namespace std;

int CmpFunc (const void* _str1, const void* _str2)
{

    const char* str1 = (const char*) _str1;
    const char* str2 = (const char*) _str2;
    if ( str1 &lt; str2 )
        return -1;
    if ( str1 == str2 )
        return 0;
    else return 1;

}

void QSortExample()
{
     int c;
     char *sArray[] = {&quot;eins&quot;, &quot;zwei&quot;, &quot;drei&quot;, &quot;vier&quot;, &quot;fuenf&quot;, &quot;sechs&quot;, 
                       &quot;sieben&quot;, &quot;acht&quot;, &quot;neun&quot;, &quot;zehn&quot;};                       
     qsort((void*)sArray, 10, sizeof(sArray[0]), CmpFunc);
     cout &lt;&lt; &quot;The first ten elements of the sorted field are ...&quot; &lt;&lt; endl;
     for(c=0;c&lt;10;c++)
          cout &lt;&lt; &quot;element #&quot; &lt;&lt; c+1 &lt;&lt; &quot; contains &quot; &lt;&lt; sArray[c] &lt;&lt; endl;
     cout &lt;&lt; endl;
}

int main()
{
    QSortExample();
    system(&quot;pause&quot;);
    return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/974827</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/974827</guid><dc:creator><![CDATA[shurik&#x27;n]]></dc:creator><pubDate>Tue, 24 Jan 2006 12:04:09 GMT</pubDate></item><item><title><![CDATA[Reply to Chars mittels qsort sortieren on Tue, 24 Jan 2006 12:14:36 GMT]]></title><description><![CDATA[<p>auf Pointern (egal ob void* oder const char*) bedeutet Vergleich immer ein Adressvergleich - d.h. deine Strings werden nach Anordnung im Speicher sortiert. Zum Vergleich der String-Inhalte solltest du <a href="http://man.cx/strcmp" rel="nofollow">man: strcmp</a>() verwenden:</p>
<pre><code class="language-cpp">int CmpFunc (const void* _str1, const void* _str2)
{

    const char* str1 = (const char*) _str1;
    const char* str2 = (const char*) _str2;
    return strcmp(str1,str2);
}
</code></pre>
<p>PS: Noch besser ist, du verwendest std::string (statt char*) und std::sort (statt qsort).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/974841</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/974841</guid><dc:creator><![CDATA[CStoll (off)]]></dc:creator><pubDate>Tue, 24 Jan 2006 12:14:36 GMT</pubDate></item><item><title><![CDATA[Reply to Chars mittels qsort sortieren on Tue, 24 Jan 2006 13:29:42 GMT]]></title><description><![CDATA[<p>CStoll (off) schrieb:</p>
<blockquote>
<p>auf Pointern (egal ob void* oder const char*) bedeutet Vergleich immer ein Adressvergleich - d.h. deine Strings werden nach Anordnung im Speicher sortiert. Zum Vergleich der String-Inhalte solltest du <a href="http://man.cx/strcmp" rel="nofollow">man: strcmp</a>() verwenden:</p>
<pre><code class="language-cpp">int CmpFunc (const void* _str1, const void* _str2)
{

    const char* str1 = (const char*) _str1;
    const char* str2 = (const char*) _str2;
    return strcmp(str1,str2);
}
</code></pre>
<p>PS: Noch besser ist, du verwendest std::string (statt char*) und std::sort (statt qsort).</p>
</blockquote>
<p>Die CmpFunc Methode funktioniert bei mir nicht. Kein Char Element wird sortiert.</p>
<p>Ich soll in dieser Übung zwingend qsort und *char statt string benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/974933</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/974933</guid><dc:creator><![CDATA[shurik&#x27;n]]></dc:creator><pubDate>Tue, 24 Jan 2006 13:29:42 GMT</pubDate></item><item><title><![CDATA[Reply to Chars mittels qsort sortieren on Tue, 24 Jan 2006 13:34:33 GMT]]></title><description><![CDATA[<p>Verwende std::sort, ist schneller, sicherer und sauberer.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/974943</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/974943</guid><dc:creator><![CDATA[Any]]></dc:creator><pubDate>Tue, 24 Jan 2006 13:34:33 GMT</pubDate></item><item><title><![CDATA[Reply to Chars mittels qsort sortieren on Tue, 24 Jan 2006 13:42:04 GMT]]></title><description><![CDATA[<p>Any schrieb:</p>
<blockquote>
<p>Verwende std::sort, ist schneller, sicherer und sauberer.</p>
</blockquote>
<p>Ich habe hier keine Wahl. Ich soll qsort benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/974958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/974958</guid><dc:creator><![CDATA[shurik&#x27;n]]></dc:creator><pubDate>Tue, 24 Jan 2006 13:42:04 GMT</pubDate></item><item><title><![CDATA[Reply to Chars mittels qsort sortieren on Tue, 24 Jan 2006 13:42:49 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">int CmpFunc (const void* _str1, const void* _str2)
{

    const char* str1 = *(const char**) _str1;
    const char* str2 = *(const char**) _str2;
    return strcmp(str1,str2);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/974959</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/974959</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 24 Jan 2006 13:42:49 GMT</pubDate></item><item><title><![CDATA[Reply to Chars mittels qsort sortieren on Tue, 24 Jan 2006 14:09:01 GMT]]></title><description><![CDATA[<p>super, es funktioniert.</p>
<p>aber warum muß ich das denn mit zeiger auf zeiger machen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/974983</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/974983</guid><dc:creator><![CDATA[shurik&#x27;n]]></dc:creator><pubDate>Tue, 24 Jan 2006 14:09:01 GMT</pubDate></item><item><title><![CDATA[Reply to Chars mittels qsort sortieren on Tue, 24 Jan 2006 14:29:41 GMT]]></title><description><![CDATA[<p>Weil der Vergleichsfunktion Zeiger auf die zu sortierenden Elemente, die in dem Fall Zeiger auf char sind, uebergeben werden. Das steht so uebrigens auch in der Dokumentation von qsort ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/975013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/975013</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Tue, 24 Jan 2006 14:29:41 GMT</pubDate></item></channel></rss>