<?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[Größe eines Arrays feststellen]]></title><description><![CDATA[<p>Hallo zusammen!</p>
<p>Ich habe in meinem Programm ein zweidimensionales char-Array. Dabei ist die Größe der zweiten Dimension unterschiedlich.....also steht beispielsweise unter array[0] &quot;Beispiel&quot; und array[1] = &quot;Hallo&quot; oder so ähnlich.<br />
Kann ich die Länge des Wortes irgendwie abfragen, damit ich weiß, wie weit eine for-Schliefe laufen muss, wenn sie jeden einzelnen Buchstaben behandeln soll? Ich hatte irgendwie im Kopf, dass es sowas wie array[i].length gibt, aber das tut es bei mir nicht.</p>
<p>Ich hoffe mein Problem war verständlich und es kann mir jemand helfen! <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>Lg, Meike</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/128797/größe-eines-arrays-feststellen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 25 Aug 2026 20:59:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/128797.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Dec 2005 09:51:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Wed, 07 Dec 2005 09:51:49 GMT]]></title><description><![CDATA[<p>Hallo zusammen!</p>
<p>Ich habe in meinem Programm ein zweidimensionales char-Array. Dabei ist die Größe der zweiten Dimension unterschiedlich.....also steht beispielsweise unter array[0] &quot;Beispiel&quot; und array[1] = &quot;Hallo&quot; oder so ähnlich.<br />
Kann ich die Länge des Wortes irgendwie abfragen, damit ich weiß, wie weit eine for-Schliefe laufen muss, wenn sie jeden einzelnen Buchstaben behandeln soll? Ich hatte irgendwie im Kopf, dass es sowas wie array[i].length gibt, aber das tut es bei mir nicht.</p>
<p>Ich hoffe mein Problem war verständlich und es kann mir jemand helfen! <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>Lg, Meike</p>
]]></description><link>https://www.c-plusplus.net/forum/post/936438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/936438</guid><dc:creator><![CDATA[Lexaja]]></dc:creator><pubDate>Wed, 07 Dec 2005 09:51:49 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Wed, 07 Dec 2005 09:54:38 GMT]]></title><description><![CDATA[<blockquote>
<p>irgendwie im Kopf, dass es sowas wie array[i].length gibt, aber das tut es bei mir nicht</p>
</blockquote>
<p>Das gab's in Java <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="😉"
    /></p>
<p>Mit der Funktion <a href="http://www.cppreference.com/stdstring/strlen.html" rel="nofollow">strlen</a> kannst du die Länge eines char-Arrays herausfinden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/936442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/936442</guid><dc:creator><![CDATA[GPC]]></dc:creator><pubDate>Wed, 07 Dec 2005 09:54:38 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Wed, 07 Dec 2005 10:00:28 GMT]]></title><description><![CDATA[<p>Ach ja...in Java <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>Danke schonmal. Dann probier ich's mal mit strlen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/936448</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/936448</guid><dc:creator><![CDATA[Lexaja]]></dc:creator><pubDate>Wed, 07 Dec 2005 10:00:28 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Wed, 07 Dec 2005 10:34:39 GMT]]></title><description><![CDATA[<p>Das sagt dir auch nicht wie lange das Array ist, sondern nur wieviele Zeichen vor dem '\0' stehen.</p>
<p>In C/C++ hast du keine Chance die Länge eines Arrays abzufragen. Es sei denn man hat es sich in einer Variable gemerkt.<br />
<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/936493</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/936493</guid><dc:creator><![CDATA[Mathias]]></dc:creator><pubDate>Wed, 07 Dec 2005 10:34:39 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Wed, 07 Dec 2005 10:35:49 GMT]]></title><description><![CDATA[<p>Hm....also irgendwie klappt das nicht so richtig. Wenn ich mir mein Array wie in ausgeben() zu sehen, ausgeben lasse, wird immer nur der erste Buchstabe jeder Zeile ausgegeben und danach kommt eine Fehlermeldung. Kann mir doch mal eben jemand helfen? Das Programm soll den peicherplatz für jeden eingelesenen String dynamisch auf die Länge des Strings reservieren....</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

void zeigerAufNullSetzen(int anzahlStrings, char ** strFeld){
	for(int i = 0; i &lt; anzahlStrings; i++)
		strFeld[i] = NULL;
}

void inhaltDerElementeSetzen(int anzahlStrings, char ** strFeld){
	string eingabe;
	for(int i = 0; i &lt; anzahlStrings; i++){
		// Wort einlesen
		cout &lt;&lt; &quot;Wort Nummer &quot; &lt;&lt; i+1 &lt;&lt; &quot;: &quot;;
		cin &gt;&gt; eingabe;

		// Speicherplatz in Wortlänge reservieren
		strFeld[i] = new char[eingabe.length()];

		// Wort einspeichern
		for(int k = 0; k &lt; eingabe.length(); k++)
			strFeld[i][k] = eingabe[k];
	}
}

void ausgeben(int anzahlStrings, char ** strFeld){
	for(int i = 0; i &lt; anzahlStrings; i++){
		for(int k = 0; k &lt; strlen(strFeld[i]); i++)
			cout &lt;&lt; strFeld[i][k];
		cout &lt;&lt; &quot;\n&quot;;
	}
}

int main ()
{
	int anzahlStrings=5;
	char **strFeld = new char*[anzahlStrings];

	zeigerAufNullSetzen(anzahlStrings, strFeld);
	inhaltDerElementeSetzen(anzahlStrings, strFeld);
	ausgeben(anzahlStrings, strFeld);
	return 0;
}
</code></pre>
<p>Vielen Dank schonmal!</p>
<p>P.S.: Ändere ich die Methode ausgeben() folgendermaßen um, werden zwar alle Wörter komplett ausgegeben, aber zusätzlich noch einige Zeichen (z.B.: | , ² usw.)</p>
<pre><code>void ausgeben(int anzahlStrings, char ** strFeld){
	for(int i = 0; i &lt; anzahlStrings; i++)
		printf(&quot;%s\n&quot;, *(strFeld+i));
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/936495</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/936495</guid><dc:creator><![CDATA[Lexaja]]></dc:creator><pubDate>Wed, 07 Dec 2005 10:35:49 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Wed, 07 Dec 2005 10:37:14 GMT]]></title><description><![CDATA[<p>Ach so.....das würde vielleicht erklären, warum die Ausgabe so seltsam aussieht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/936497</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/936497</guid><dc:creator><![CDATA[Lexaja]]></dc:creator><pubDate>Wed, 07 Dec 2005 10:37:14 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Wed, 07 Dec 2005 11:08:09 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">// Speicherplatz in Wortlänge reservieren
        strFeld[i] = new char[eingabe.length()];

        // Wort einspeichern
        for(int k = 0; k &lt; eingabe.length(); k++)
            strFeld[i][k] = eingabe[k];
</code></pre>
<p>Du reservierst Dir genau ein Zeichen zuwenig für den String, da ein C-String im Speicher immer mit einem Nullbyte aufhört. Deshalb kommen die zusätzlichen Zeichen (er &quot;weiss&quot; nicht dass der String dort zuende ist und druckt das was danach im Speicher steht mit aus).</p>
<pre><code class="language-cpp">// Speicherplatz in Wortlänge reservieren
        strFeld[i] = new char[eingabe.length() + 1];

        // Wort einspeichern
        for(int k = 0; k &lt; eingabe.length(); k++)
            strFeld[i][k] = eingabe[k];
        strFeld[i][eingabe.length()] = '\0';
</code></pre>
<p>Noch besser wäre natürlich (wenn schon strlen, warum nicht auch den Rest?)</p>
<pre><code class="language-cpp">// Speicherplatz in Wortlänge reservieren
        strFeld[i] = new char[eingabe.length() + 1];

        // Wort einspeichern
        strcpy(strFeld[i], eingabe.c_str());
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/936504</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/936504</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Wed, 07 Dec 2005 11:08:09 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Wed, 07 Dec 2005 11:19:12 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Danke sehr! Mit folgemdem Code funktioniert es jetzt:</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;

using namespace std;

void zeigerAufNullSetzen(int anzahlStrings, char ** strFeld){
	for(int i = 0; i &lt; anzahlStrings; i++)
		strFeld[i] = NULL;
}

void inhaltDerElementeSetzen(int anzahlStrings, char ** strFeld){
	string eingabe;
	for(int i = 0; i &lt; anzahlStrings; i++){
		// Wort einlesen
		cout &lt;&lt; &quot;Wort Nummer &quot; &lt;&lt; i+1 &lt;&lt; &quot;: &quot;;
		cin &gt;&gt; eingabe;

		// Speicherplatz in Wortlänge reservieren
		strFeld[i] = new char[eingabe.length() +1];

		// Wort einspeichern
		for(int k = 0; k &lt; eingabe.length(); k++)
			strFeld[i][k] = eingabe[k];
		strFeld[i][eingabe.length()] = '\0';
	}
}

void ausgeben(int anzahlStrings, char ** strFeld){
	for(int i = 0; i &lt; anzahlStrings; i++)
        printf(&quot;%s\n&quot;, strFeld[i]);

}

int main ()
{
	int anzahlStrings=5;
	char **strFeld = new char*[anzahlStrings];

	zeigerAufNullSetzen(anzahlStrings, strFeld);
	inhaltDerElementeSetzen(anzahlStrings, strFeld);
	ausgeben(anzahlStrings, strFeld);
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/936515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/936515</guid><dc:creator><![CDATA[Lexaja]]></dc:creator><pubDate>Wed, 07 Dec 2005 11:19:12 GMT</pubDate></item><item><title><![CDATA[Reply to Größe eines Arrays feststellen on Wed, 07 Dec 2005 11:31:33 GMT]]></title><description><![CDATA[<p>Allgemein zur Größe von Arrays:</p>
<p>1. sizeof-Operator</p>
<pre><code class="language-cpp">int array[100];
int size = sizeof(array) / sizeof(*array);
</code></pre>
<p>Das geht aber nicht wenn du das Array implizit mal in einen Pointer umwandelst, was schnell passieren kann:</p>
<pre><code class="language-cpp">int array[100];
int *pointer = array;
int size = sizeof(pointer) / sizeof(*pointer); // oops!
</code></pre>
<p>Vorteil von dem ganzen ist dass es zur Compile-Zeit abläuft, bin mir bei der nächsten Methode nicht ganz sicher ob das ein Compiler wegoptimieren kann:</p>
<p>2. templates</p>
<pre><code class="language-cpp">template&lt;class Type, size_t ArraySize&gt;
size_t array_size(Type const (&amp;array)[ArraySize])
{
    return ArraySize;
}
</code></pre>
<p>Das geht zwar auch nicht mit Pointern, aber da bekommt man eine schöne Fehlermeldung des Compilers und kann sich so langes Debugging ersparen.</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/936521</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/936521</guid><dc:creator><![CDATA[FireFlow]]></dc:creator><pubDate>Wed, 07 Dec 2005 11:31:33 GMT</pubDate></item></channel></rss>