<?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[Frage zu dem C4309-Fehler]]></title><description><![CDATA[<p>Hallo,</p>
<p>in einer Liste möchte ich gerne die Listenelemente bereits beim 'einfuegen' schon alphabetisch sortiert haben und habe mir folgendes überlegt:</p>
<pre><code class="language-cpp">kopf-&gt;name[0] = 0;		/* kleiner als jedes ASCII-Zeichen */
ende-&gt;name[0] = 255;		/* groesser als jedes ASCII-Zeichen */
ende-&gt;name[1] = 0;
</code></pre>
<p>anschließend vergleiche ich mit <strong>strcmp</strong> mit einem bestehenden Lietenelement und fuege es davor oder dahinter ein.</p>
<p>Manchmal kommt der C4309-Fehler und manchmal nicht, was mich schon recht verwirrt. Aber die wesentliche frage die mich beschaeftigt ist?</p>
<p>Wie beuge ich der Warnung vor, bzw. kann sie beheben?</p>
<p>Laut MSDN ist bei der Typkonvertierung der Speicherplatz der Konstanten ueberschirtten worden.</p>
<p>Als Empfehlung ist ein größerer Typ für die Konstante zu verwenden.</p>
<p>Ich habe schwierigkeiten das zu verstehen.</p>
<p>Die Konstante wäre das durch die Integer dargestellte Zeichen. Dabei wurde der Speicherplatz von char name[0] überschritten?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/200607/frage-zu-dem-c4309-fehler</link><generator>RSS for Node</generator><lastBuildDate>Sun, 04 Oct 2026 23:32:00 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/200607.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 17 Dec 2007 13:34:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu dem C4309-Fehler on Mon, 17 Dec 2007 13:34:48 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>in einer Liste möchte ich gerne die Listenelemente bereits beim 'einfuegen' schon alphabetisch sortiert haben und habe mir folgendes überlegt:</p>
<pre><code class="language-cpp">kopf-&gt;name[0] = 0;		/* kleiner als jedes ASCII-Zeichen */
ende-&gt;name[0] = 255;		/* groesser als jedes ASCII-Zeichen */
ende-&gt;name[1] = 0;
</code></pre>
<p>anschließend vergleiche ich mit <strong>strcmp</strong> mit einem bestehenden Lietenelement und fuege es davor oder dahinter ein.</p>
<p>Manchmal kommt der C4309-Fehler und manchmal nicht, was mich schon recht verwirrt. Aber die wesentliche frage die mich beschaeftigt ist?</p>
<p>Wie beuge ich der Warnung vor, bzw. kann sie beheben?</p>
<p>Laut MSDN ist bei der Typkonvertierung der Speicherplatz der Konstanten ueberschirtten worden.</p>
<p>Als Empfehlung ist ein größerer Typ für die Konstante zu verwenden.</p>
<p>Ich habe schwierigkeiten das zu verstehen.</p>
<p>Die Konstante wäre das durch die Integer dargestellte Zeichen. Dabei wurde der Speicherplatz von char name[0] überschritten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1421960</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1421960</guid><dc:creator><![CDATA[MarcR]]></dc:creator><pubDate>Mon, 17 Dec 2007 13:34:48 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu dem C4309-Fehler on Mon, 17 Dec 2007 13:37:25 GMT]]></title><description><![CDATA[<p>Ich würde dir ja &quot;unsigned char&quot; empfehlen <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="😉"
    /> Da passen die Werte mit Sicherheit rein.</p>
<p>(btw, 255 ist auch ein legales ASCII-Zeichen - auch wenn's in normalen Texten nicht vorkommt)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1421963</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1421963</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Mon, 17 Dec 2007 13:37:25 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu dem C4309-Fehler on Mon, 17 Dec 2007 13:38:13 GMT]]></title><description><![CDATA[<p>Was für einen Datentyp hat denn die Variable 'name'? Wenn der Typ <code>char name[0]</code> ist, dass ist es ein leerer Typ. Die Zahl in den eckigen Klammern gibt ja an, wieviele chars da reinpassen, bei 0 passt eben gar nix rein. Eventuell dann char ..[2] oder so verwenden, je nachdem, wieviel da rein soll.<br />
Und das mit dem sortieren.. Kannst du mal deine Routine zeigen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1421966</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1421966</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Mon, 17 Dec 2007 13:38:13 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu dem C4309-Fehler on Mon, 17 Dec 2007 14:00:50 GMT]]></title><description><![CDATA[<p>Also wenn ich es auf unsigned char setze, nölt fgets rum, da muss ich sicherlich die eingaben noch umschreiben.</p>
<p>Die Sortierung hab ich mir ungefähr so überlegt.</p>
<pre><code class="language-cpp">if (strcmp(name, kopf-&gt;nachfolger-&gt;name) == 0)
		current = kopf;
	else if (strcmp(name, ende-&gt;nachfolger-&gt;name) &gt; 0)
		current = ende-&gt;vorgaenger;
	else{
		int vergleich = strcmp(name, current-&gt;name);
		if (vergleich &gt; 0)
			while (strcmp(name, momentan-&gt;nachfolger-&gt;name) &gt; 0) {
				momentan = momentan-&gt;nachfolger;

			}
		else if(vergleich &lt; 0)
			while (strcmp(name, current-&gt;name) &lt; 0) {
				momentan = momentan-&gt;vorgaenger;

			}
		else {
			while (strcmp(name, current-&gt;name) == 0) {
				momentan = momentan-&gt;vorgaenger;

			}						
		}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1421982</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1421982</guid><dc:creator><![CDATA[MarcR]]></dc:creator><pubDate>Mon, 17 Dec 2007 14:00:50 GMT</pubDate></item></channel></rss>