<?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[CharLower]]></title><description><![CDATA[<p>Hi,</p>
<p>ich möchte diese API - Funktion aufrufen:</p>
<blockquote>
<p>The CharLower function converts a character string or a single character to lowercase</p>
</blockquote>
<p>Syntax:</p>
<blockquote>
<p>LPTSTR CharLower(LPTSTR lpsz);</p>
</blockquote>
<pre><code class="language-cpp">// soetwas darf ich nicht aufrufen, führt zu dieser Fehlermeldung:
// Stack around the variable 'c' was corrupted.
char c = 'C';
CharLower(&amp;c);
</code></pre>
<p>Mein Problem: Ich habe ein char - Array 'mpsString' und möchte das Zeichen an der Stelle 'aiIndex' klein machen:</p>
<pre><code class="language-cpp">char *p;  
p = &amp;mpsString[aiIndex]; // p zeigt auf das i-te Element von mpsString

char *e = new char[1];
strncpy(e,p, 1);
e[1] = 0;
CharLower(e);
// ..
</code></pre>
<p>Ich habe das Gefühl, meine Lösung ist viel zu kompliziert. CharLower erwartet als Parameter <strong>LPTSTR lpsz</strong>. Deshalb der ganze Aufwand mit new und strncpy. Aber geht's auch etwas einfacher?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/119924/charlower</link><generator>RSS for Node</generator><lastBuildDate>Sat, 22 Aug 2026 03:27:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/119924.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Sep 2005 07:21:48 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to CharLower on Wed, 07 Sep 2005 07:21:48 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich möchte diese API - Funktion aufrufen:</p>
<blockquote>
<p>The CharLower function converts a character string or a single character to lowercase</p>
</blockquote>
<p>Syntax:</p>
<blockquote>
<p>LPTSTR CharLower(LPTSTR lpsz);</p>
</blockquote>
<pre><code class="language-cpp">// soetwas darf ich nicht aufrufen, führt zu dieser Fehlermeldung:
// Stack around the variable 'c' was corrupted.
char c = 'C';
CharLower(&amp;c);
</code></pre>
<p>Mein Problem: Ich habe ein char - Array 'mpsString' und möchte das Zeichen an der Stelle 'aiIndex' klein machen:</p>
<pre><code class="language-cpp">char *p;  
p = &amp;mpsString[aiIndex]; // p zeigt auf das i-te Element von mpsString

char *e = new char[1];
strncpy(e,p, 1);
e[1] = 0;
CharLower(e);
// ..
</code></pre>
<p>Ich habe das Gefühl, meine Lösung ist viel zu kompliziert. CharLower erwartet als Parameter <strong>LPTSTR lpsz</strong>. Deshalb der ganze Aufwand mit new und strncpy. Aber geht's auch etwas einfacher?</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866736</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866736</guid><dc:creator><![CDATA[Tanzfreak]]></dc:creator><pubDate>Wed, 07 Sep 2005 07:21:48 GMT</pubDate></item><item><title><![CDATA[Reply to CharLower on Wed, 07 Sep 2005 07:27:29 GMT]]></title><description><![CDATA[<p>Du brauchst einen 0-terminierten String</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866738</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866738</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Wed, 07 Sep 2005 07:27:29 GMT</pubDate></item><item><title><![CDATA[Reply to CharLower on Wed, 07 Sep 2005 07:30:55 GMT]]></title><description><![CDATA[<p>If the high-order word of this parameter is zero, the low-order word must contain a single character to be converted.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866742</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866742</guid><dc:creator><![CDATA[geht auch so:]]></dc:creator><pubDate>Wed, 07 Sep 2005 07:30:55 GMT</pubDate></item><item><title><![CDATA[Reply to CharLower on Wed, 07 Sep 2005 08:07:04 GMT]]></title><description><![CDATA[<p>Keine Ahnung obs richtig ist:</p>
<pre><code class="language-cpp">char convertToLower(char input)
{
	return reinterpret_cast&lt;char&gt;(CharLower(reinterpret_cast&lt;LPTSTR&gt;(input)));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/866762</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866762</guid><dc:creator><![CDATA[hacker22]]></dc:creator><pubDate>Wed, 07 Sep 2005 08:07:04 GMT</pubDate></item><item><title><![CDATA[Reply to CharLower on Wed, 07 Sep 2005 08:15:37 GMT]]></title><description><![CDATA[<p>...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866769</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Wed, 07 Sep 2005 08:15:37 GMT</pubDate></item><item><title><![CDATA[Reply to CharLower on Wed, 07 Sep 2005 09:07:23 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">char szString[] = &quot;GROSSESWORT&quot;;
char c = szString[5];
CharLower( &amp;c );
szString[5] = c;
</code></pre>
<p>oder in diesem Fall</p>
<pre><code class="language-cpp">char szString[] = &quot;GROSSESWORT&quot;;
szString[5] += 32;
</code></pre>
<p><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>
]]></description><link>https://www.c-plusplus.net/forum/post/866816</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866816</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Wed, 07 Sep 2005 09:07:23 GMT</pubDate></item><item><title><![CDATA[Reply to CharLower on Wed, 07 Sep 2005 09:26:30 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8113">@Airdamn</a>: genau so nicht</p>
<p>Die Funktion erwartet entweder einen Pointer auf einen Nullterminierten String, oder ein einzelnes Zeichen, das in einen Pointer gecastet wird. Also:</p>
<pre><code class="language-cpp">char c = 'A';
char* sz = reinterpret_cast&lt;char*&gt;( c); // sz ist immer noch 65 (== 'A')
</code></pre>
<p>In diesem Fall ist das &quot;high word&quot; 0 und die Funktion glaubt, dass es kein Pointer ist und konvertiert nur das eine Zeichen. D.h. Pointer &lt; 65535 lassen sich mit dieser Funktion nicht konvertieren.</p>
<p>Meiner Meinung nach ist das ein tolles Beispiel für abartige Programmierung (in diesem Fall MS).</p>
<p>BTW, was spricht eigentlich gegen tolower ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866833</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866833</guid><dc:creator><![CDATA[niemand]]></dc:creator><pubDate>Wed, 07 Sep 2005 09:26:30 GMT</pubDate></item><item><title><![CDATA[Reply to CharLower on Wed, 07 Sep 2005 10:01:57 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>mir geht's eigentlich um die Umlaute. ÄöÜ lassen sich nicht so einfach low-ern.</p>
<p>tolower ist abhängig von den locale - Setting. Default Wert ist hier C.</p>
<blockquote>
<p>A value of C specifies the minimal ANSI conforming environment for C translation.</p>
</blockquote>
<pre><code class="language-cpp">char c = 'Ä';
int i = tolower((int) c);
char d = (char) i;
// Geht nicht! Nur wenn ich vorher die locale - Settings auf &quot;deu&quot; ändere
</code></pre>
<pre><code class="language-cpp">char * locale;
locale = setlocale( LC_ALL,  &quot;deu&quot;);
</code></pre>
<p>CharLower ist eine API - Funktion und berücksichtigt die System - Einstellungen.</p>
<p>So wie's aussieht gehe ich von CharLower weg und benutze dann doch tolower.<br />
Muss mich aber mit den locale - Settings ordentlich auseinandersetzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866863</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866863</guid><dc:creator><![CDATA[Tanzfreak]]></dc:creator><pubDate>Wed, 07 Sep 2005 10:01:57 GMT</pubDate></item><item><title><![CDATA[Reply to CharLower on Wed, 07 Sep 2005 10:40:19 GMT]]></title><description><![CDATA[<p>niemand schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/8113">@Airdamn</a>: genau so nicht<br />
...</p>
</blockquote>
<p>Warum nicht?<br />
HIWORD( c ) ist 0 und LOWORD( c ) ist das zu konvertierende Zeichen!</p>
<p>Hast Du schon die Funktion CharLower mit Deiner Lösung benutzt ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866888</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Wed, 07 Sep 2005 10:40:19 GMT</pubDate></item><item><title><![CDATA[Reply to CharLower on Wed, 07 Sep 2005 11:13:46 GMT]]></title><description><![CDATA[<p>Airdamn in deinem Beispiel übergibst du einen Zeiger auf den Buchstaben. Es muss aber der Buchstabe selbst übergeben werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866916</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866916</guid><dc:creator><![CDATA[char.]]></dc:creator><pubDate>Wed, 07 Sep 2005 11:13:46 GMT</pubDate></item><item><title><![CDATA[Reply to CharLower on Wed, 07 Sep 2005 11:21:59 GMT]]></title><description><![CDATA[<p>CharLower erwartet einen Zeiger auf einen Null-terminierten String oder einen Zeiger auf einen Char!</p>
<p>MSDN schrieb:</p>
<blockquote>
<p>[in, out] Pointer to a null-terminated string or specifies a single character. If the high-order word of this parameter is zero, the low-order word must contain a single character to be converted.</p>
</blockquote>
<p>Und das mein Beispiel funzt ist zufall?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866929</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866929</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Wed, 07 Sep 2005 11:21:59 GMT</pubDate></item><item><title><![CDATA[Reply to CharLower on Wed, 07 Sep 2005 11:29:58 GMT]]></title><description><![CDATA[<blockquote>
<p>CharLower erwartet einen Zeiger auf einen Null-terminierten String oder einen Zeiger auf einen Char!</p>
</blockquote>
<p>Falsch:</p>
<blockquote>
<p>Pointer to a null-terminated string or specifies a single character.</p>
</blockquote>
<p>Specifiest meint nicht, dass es sich dabei um einen Zeiger auf ein einzelnes Character handet.<br />
Bei einem Zeiger ist das Highword typischerweise nicht 0.<br />
BTW, bei mir funktioniert Dein Beispiel nicht... Ob es funktioniert hängt davon ab, ob hinter dem char c eine 0 auf dem Stack liegt. Dann sieht es so aus, wie ein null-terminierter String und es geht zufällig. Der OP hatte aber ebenfalls genau einen Fehler an der Stelle bekommen (erstes Post).</p>
<p>Überleg Dir mal, wie Du die Funktion CharLower selber implementieren würdest. Wie erkennst Du denn, dass der Pointer den Dir jemand übergibt nur ein Zeichen enthält oder einen String.</p>
<p>@OP, ich hätte erwartet, dass MSVC die locale auf die Ländereinstellung von Windows setzt (und das tolower letztendlich CharLower aufruft, habe ich aber nicht nachgeschaut, sorry)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/866931</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866931</guid><dc:creator><![CDATA[niemand]]></dc:creator><pubDate>Wed, 07 Sep 2005 11:29:58 GMT</pubDate></item><item><title><![CDATA[Reply to CharLower on Wed, 07 Sep 2005 11:35:01 GMT]]></title><description><![CDATA[<p>Ok, dann muss man bei einem einzelnen char scheinbar den Rückgabewert verarbeiten, denn der übergebene bleibt unverändert:</p>
<pre><code class="language-cpp">char c = 'A';
char* p = reinterpret_cast&lt;char*&gt;( c );
char* r = CharLower( p );
cout &lt;&lt; (char)p &lt;&lt; endl;    // 'A'
cout &lt;&lt; (char)r &lt;&lt; endl;    // 'a'
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/866935</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866935</guid><dc:creator><![CDATA[Airdamn]]></dc:creator><pubDate>Wed, 07 Sep 2005 11:35:01 GMT</pubDate></item><item><title><![CDATA[Reply to CharLower on Wed, 07 Sep 2005 11:47:35 GMT]]></title><description><![CDATA[<p>richtig! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /> <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/866945</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/866945</guid><dc:creator><![CDATA[vielleicht!]]></dc:creator><pubDate>Wed, 07 Sep 2005 11:47:35 GMT</pubDate></item></channel></rss>