<?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[_tcsupr_s richtig angewandt, nur wie?]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe hier folgenden Codeausschnitt:</p>
<pre><code>int funk(const TCHAR *value, int i)
{
    TCHAR *mystr = _tcsupr(_tcsdup(value)); 
}
</code></pre>
<p>Nun sagt mir VS2005 natürlich, das ich nicht &quot;_tcsupr&quot;, sondern besser _tcsupr_s nehmen soll weil die super sicher ist. Habe schon einiges probiert, kriege es aber ums verrecken nicht zum rennen.</p>
<p>So habe ich es probiert:</p>
<pre><code>int size_value = sizeof(value);	//weil _tcsupr_s die Größe des Buffers will
    char* temp = _tcsdup(value);
    //*temp[size_value] =&quot;\0&quot;; //hatte ich probiert, weil er sage dass der String nicht null-terminated ist. Geht aber nicht weil es eine ungültige Dereferenzierung ist
    _tcsupr_s(temp, size_value);

    TCHAR *mystr = temp;
</code></pre>
<p>Ich glaube dass ich irgend einen total grundlegenden Fehler mache, und hoffe dass mir jemand auf die Sprünge helfen kann weil momentan sehe ich gar nix mehr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>Danke schon mal im Voraus...</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/211331/_tcsupr_s-richtig-angewandt-nur-wie</link><generator>RSS for Node</generator><lastBuildDate>Wed, 14 Oct 2026 01:16:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/211331.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 21 Apr 2008 21:12:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to _tcsupr_s richtig angewandt, nur wie? on Mon, 21 Apr 2008 21:12:50 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe hier folgenden Codeausschnitt:</p>
<pre><code>int funk(const TCHAR *value, int i)
{
    TCHAR *mystr = _tcsupr(_tcsdup(value)); 
}
</code></pre>
<p>Nun sagt mir VS2005 natürlich, das ich nicht &quot;_tcsupr&quot;, sondern besser _tcsupr_s nehmen soll weil die super sicher ist. Habe schon einiges probiert, kriege es aber ums verrecken nicht zum rennen.</p>
<p>So habe ich es probiert:</p>
<pre><code>int size_value = sizeof(value);	//weil _tcsupr_s die Größe des Buffers will
    char* temp = _tcsdup(value);
    //*temp[size_value] =&quot;\0&quot;; //hatte ich probiert, weil er sage dass der String nicht null-terminated ist. Geht aber nicht weil es eine ungültige Dereferenzierung ist
    _tcsupr_s(temp, size_value);

    TCHAR *mystr = temp;
</code></pre>
<p>Ich glaube dass ich irgend einen total grundlegenden Fehler mache, und hoffe dass mir jemand auf die Sprünge helfen kann weil momentan sehe ich gar nix mehr <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>Danke schon mal im Voraus...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495958</guid><dc:creator><![CDATA[Gast34937]]></dc:creator><pubDate>Mon, 21 Apr 2008 21:12:50 GMT</pubDate></item><item><title><![CDATA[Reply to _tcsupr_s richtig angewandt, nur wie? on Tue, 22 Apr 2008 05:58:24 GMT]]></title><description><![CDATA[<p>Gast34937 schrieb:</p>
<blockquote>
<p>int size_value = sizeof(value); //weil _tcsupr_s die Größe des Buffers will</p>
</blockquote>
<p>sizeof(value) ist aber nicht die Größe des Puffers. sizeof(value) ist sizeof(TCHAR*), und das ist auf einem 32Bit-System üblicherweise 4.</p>
<p>Du kannst aus einem Zeiger nicht die Größe des Puffers ermitteln. Die müsstest du schon mit übergeben. Die Größe des Puffers, auf den value zeigt, ist hier aber gar nicht relevant. Es geht um die Größe des Puffers, auf den der Rückgabewert von _tcsdup zeigt.</p>
<p>Da _tcsdup aber automatisch Speicher in passender Größe anfordert, ist _tcsupr_s hier auch nicht sicherer als _tcsupr. Du solltest allerdings prüfen, ob _tcsdup nicht NULL zurückgibt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495995</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495995</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 22 Apr 2008 05:58:24 GMT</pubDate></item><item><title><![CDATA[Reply to _tcsupr_s richtig angewandt, nur wie? on Tue, 22 Apr 2008 06:27:15 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>vielen Dank für die Antwort. Habe ich nicht trotzdem eine Möglichkeit, die _tcsupr_s zu verwenden, ohne die Größe des Puffers zu übergeben? Kann ich vielleicht einfach 100 als Größe übergeben, wenn ich weiß dass es definitiv nicht mehr sein wird, oder ist die genaue Größe erforderlich?</p>
<p>Ich würde halt gerne die Warnung los werden, ohne Warnungen auszuschalten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496007</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496007</guid><dc:creator><![CDATA[Gast34937]]></dc:creator><pubDate>Tue, 22 Apr 2008 06:27:15 GMT</pubDate></item><item><title><![CDATA[Reply to _tcsupr_s richtig angewandt, nur wie? on Tue, 22 Apr 2008 06:30:59 GMT]]></title><description><![CDATA[<p>Du kannst mit _tcslen die Länge des von _tcsdup zurückgegebenen Strings ermitteln, das um 1 erhöhen und als Länge angeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496009</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496009</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Tue, 22 Apr 2008 06:30:59 GMT</pubDate></item><item><title><![CDATA[Reply to _tcsupr_s richtig angewandt, nur wie? on Tue, 22 Apr 2008 17:52:53 GMT]]></title><description><![CDATA[<p>Vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1496371</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1496371</guid><dc:creator><![CDATA[Gast34937]]></dc:creator><pubDate>Tue, 22 Apr 2008 17:52:53 GMT</pubDate></item></channel></rss>