<?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[_ultoa_s wie richtig aufrufen?]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe hier folgenden Code:</p>
<pre><code>unsigned long i=2222;
char buffer[15];
_ultoa_s(i, buffer, strlen(buffer), 10);
</code></pre>
<p>Das Programm lässt sich auch ohne Warnings kompilieren, aber wenn ich es starte, dann sagt Windows dass ein Problem festgestellt wurde (nicht welches) und fragt mich ob ich nen Problembericht senden will <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="😃"
    /></p>
<p>Offensichtlich rufe ich die Funktion falsch auf, denn wenn ich anstelle von strlen(buffer) &quot;15&quot; hinschreibe für die Anzahl der Elemente die in den Buffer reinpassen, läuft alles ohne Probleme. Aber das ist natürlich Mist, da einen konstanten Wert reinzuschreiben.</p>
<p>Kann mir jemand sagen, was ich falsch mache?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/211100/_ultoa_s-wie-richtig-aufrufen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 20:51:53 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/211100.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 18 Apr 2008 18:01:58 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to _ultoa_s wie richtig aufrufen? on Fri, 18 Apr 2008 18:01:58 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich habe hier folgenden Code:</p>
<pre><code>unsigned long i=2222;
char buffer[15];
_ultoa_s(i, buffer, strlen(buffer), 10);
</code></pre>
<p>Das Programm lässt sich auch ohne Warnings kompilieren, aber wenn ich es starte, dann sagt Windows dass ein Problem festgestellt wurde (nicht welches) und fragt mich ob ich nen Problembericht senden will <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="😃"
    /></p>
<p>Offensichtlich rufe ich die Funktion falsch auf, denn wenn ich anstelle von strlen(buffer) &quot;15&quot; hinschreibe für die Anzahl der Elemente die in den Buffer reinpassen, läuft alles ohne Probleme. Aber das ist natürlich Mist, da einen konstanten Wert reinzuschreiben.</p>
<p>Kann mir jemand sagen, was ich falsch mache?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494341</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494341</guid><dc:creator><![CDATA[Gast34838]]></dc:creator><pubDate>Fri, 18 Apr 2008 18:01:58 GMT</pubDate></item><item><title><![CDATA[Reply to _ultoa_s wie richtig aufrufen? on Fri, 18 Apr 2008 18:07:27 GMT]]></title><description><![CDATA[<p>sizeof(buffer)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494342</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494342</guid><dc:creator><![CDATA[ppppppppp]]></dc:creator><pubDate>Fri, 18 Apr 2008 18:07:27 GMT</pubDate></item><item><title><![CDATA[Reply to _ultoa_s wie richtig aufrufen? on Fri, 18 Apr 2008 18:08:57 GMT]]></title><description><![CDATA[<p>Dein Buffer ist nicht initialisiert also findet strlen keine terminale 0 und schießt über das Ende hinaus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494343</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494343</guid><dc:creator><![CDATA[Ben04]]></dc:creator><pubDate>Fri, 18 Apr 2008 18:08:57 GMT</pubDate></item><item><title><![CDATA[Reply to _ultoa_s wie richtig aufrufen? on Fri, 18 Apr 2008 18:15:28 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>also sizeof ist doch falsch, oder? Damit kriege ich doch den Wert, den z.B. ein int im Speicher belegt?!</p>
<p>Mhm, gut, der Buffer ist nicht initialisiert. Aber wenn ich ihn vorher initialisiere, in etwa so: char buffer[15]={0}; dann liefert strlen(buffer) ja 0 zurück, oder?</p>
<p>Also wenn ich Microsoft richtig verstehe, dann ist doch an dieser Stelle der Funktion die Größe anzugeben, die maximal in den buffer passen kann, oder? Und strlen liefert mir ja nur was zurück, wenn irgendwo in dem Buffer mal irgend was drin steht, was mit \0 abgeschlossen ist?!</p>
<p>Total verwirrt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494346</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494346</guid><dc:creator><![CDATA[Gast34838]]></dc:creator><pubDate>Fri, 18 Apr 2008 18:15:28 GMT</pubDate></item><item><title><![CDATA[Reply to _ultoa_s wie richtig aufrufen? on Fri, 18 Apr 2008 18:24:12 GMT]]></title><description><![CDATA[<p>sizeof ist hier schon richtig. Du kannst die 15 auch direkt eintragen oder die Templateüberladung nutzen.</p>
<pre><code class="language-cpp">unsigned long i=2222;
char buffer[15];
_ultoa_s(i, buffer, 15, 10);	
// oder
_ultoa_s&lt;15&gt;(i, buffer, 10);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1494352</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494352</guid><dc:creator><![CDATA[Braunstein]]></dc:creator><pubDate>Fri, 18 Apr 2008 18:24:12 GMT</pubDate></item><item><title><![CDATA[Reply to _ultoa_s wie richtig aufrufen? on Fri, 18 Apr 2008 18:29:23 GMT]]></title><description><![CDATA[<p>Auf diese scheiss Funktion solltest du verzichten! benutzt stringstreams dafuer, siehe FAQ</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494353</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494353</guid><dc:creator><![CDATA[abkotzer]]></dc:creator><pubDate>Fri, 18 Apr 2008 18:29:23 GMT</pubDate></item><item><title><![CDATA[Reply to _ultoa_s wie richtig aufrufen? on Fri, 18 Apr 2008 18:30:30 GMT]]></title><description><![CDATA[<p>Warum ist sizeof hier richtig? Damit kriege ich doch höchstens die Zahl, zurück die ein char im Speicher belegt?!</p>
<p>Ist es möglicherweise von MS direkt so vorgesehen, dass man die Größe des Buffers &quot;hard reincoded&quot;?</p>
<p>Danke.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494354</guid><dc:creator><![CDATA[Gast34838]]></dc:creator><pubDate>Fri, 18 Apr 2008 18:30:30 GMT</pubDate></item><item><title><![CDATA[Reply to _ultoa_s wie richtig aufrufen? on Fri, 18 Apr 2008 18:38:57 GMT]]></title><description><![CDATA[<p>Gast34838 schrieb:</p>
<blockquote>
<p>Warum ist sizeof hier richtig? Damit kriege ich doch höchstens die Zahl, zurück die ein char im Speicher belegt?!</p>
</blockquote>
<p>Nein, Du bekommst die Größe, die ein char[15] im Speicher belegt, weil buffer kein char sondern ein Array von chars ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494356</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494356</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Fri, 18 Apr 2008 18:38:57 GMT</pubDate></item><item><title><![CDATA[Reply to _ultoa_s wie richtig aufrufen? on Fri, 18 Apr 2008 19:00:08 GMT]]></title><description><![CDATA[<p>Vielen Dank für die Hilfe! Hab das eben nochmal mit sizeof durchexerziert und es geht tatsächlich!! Echt verrückt, ich wusste tatsächlich nicht dass man mit sizeof die Größe eines Arrays in Byte kriegt. Damit kann ich ja theoretisch zur Laufzeit von jedem Array die Anzahl der möglichen Elemente kriegen, indem ich in etwa so etwas wie das schreibe:</p>
<pre><code>int elemente_anzahl = 0; 
int array[100] = {0};
elemente_anzahl = (sizeof(array))/(sizeof(int));
</code></pre>
<p>Stimmt ihr mir zu?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494366</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494366</guid><dc:creator><![CDATA[Gast34838]]></dc:creator><pubDate>Fri, 18 Apr 2008 19:00:08 GMT</pubDate></item><item><title><![CDATA[Reply to _ultoa_s wie richtig aufrufen? on Fri, 18 Apr 2008 20:17:46 GMT]]></title><description><![CDATA[<p>Das stimmt, allerdings musst du aufpassen, wenn du Arrays an Funktionen übergibst, da dann die Grösse als Information verloren geht. Auch wenn du mit Zeigern arbeitest, kann es sehr schnell heikel werden.</p>
<p>Generell empfehle ich dir jedoch, Arraydimensionen in separablen Variablen zu speichern, das ist auch langfristig sicherer - oder du steigst bei komplexeren Problemen direkt auf Typen wie std::vector um.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494391</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Fri, 18 Apr 2008 20:17:46 GMT</pubDate></item></channel></rss>