<?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[Char Array Problem]]></title><description><![CDATA[<p>Also, ich habe ein Problem mit einem Char Array. Ich bekomme in dem Programm einen String. Diesen muss ich dann Zeichen für Zeichen überprüfen. Der folgende Ausschnit zeigt einen Teil, wo aus einem großen String kleinere gemacht werden sollen.</p>
<p>Dazu wird der große in einen char array kopiert und dieser array dann mit einer for schleife durchwandert. Gleichzeitig gibt es einen 2. Char Array wo jedes gelesene zeichen reingeschrieben wird. Sobald ein bestimmtes zeichen gefunden wird, soll der inhalt dieses 2. char arrays in einen neuen string geschoben werden. Dann wird der char array gelöscht und kann wieder weiter neu befüllt werden. das ganze kann beliebig oft passieren.</p>
<pre><code>// Gesamten String unterteilen in viele kleine einzelne Strings
	// Zweck: Damit können jetzt die einzelnen TeilStringe getrennt voneinander
	// bearbeitet bzw ausgerechnet werden

	string TempString = &quot;&quot;;
	string *TeilString = new string[MAX+3];
	bool *TeilStringD = new bool[MAX+3];
	int TSid = 1; // TeilSting Id fängt bei 1 an bis x

	for (it = 0; it &lt; MAX; ++it) {
		switch (CString[it]) {
			case '(':

				if (KlammerAnz == 0){

					if (it != 0){
						TempString = &quot;&quot;;
						CTeilString[itn+1] = '\0';
						TempString = CTeilString;

						if (TempString != &quot;&quot;){

							TeilString[TSid] = CTeilString;
							TSid++;
							strcpy(CTeilString, empty.c_str());

							itn = 0;
						}
					}

				}
				CTeilString[itn] = CString[it];

				itn++;				

				KlammerAnz++;
				break;
			case ')':
				if (KlammerAnz &gt; 0){
					CTeilString[itn] = CString[it];
					CTeilString[itn+1] = '\0';
					TeilString[TSid] = CTeilString;
					TSid++;				

					itn = 0;
					strcpy(CTeilString, empty.c_str());

					KlammerAnz--;
				} else {
					// Klammer geschlossen ohne offener
					throw eWrongSyntax();
				}

				break;
			case '+':
				if (it != 0){
					// Falls 1. Zeichen soll bisheriger Teilstring nicht gespeichert werden
					if (KlammerAnz == 0){
						TempString = &quot;&quot;;
						CTeilString[itn+1] = '\0';
						TempString = CTeilString;

						if (TempString != &quot;&quot;){
							TeilString[TSid] = CTeilString;
							cout&lt;&lt;&quot;Speichere: &quot;&lt;&lt;TeilString[TSid]&lt;&lt;endl;
							TSid++;
							strcpy(CTeilString, empty.c_str());
							itn= 0;
						}
					}

					CTeilString[itn] = CString[it];

					if (KlammerAnz == 0){
						CTeilString[itn+1] = '\0';
						TeilString[TSid] = CTeilString;
						cout&lt;&lt;&quot;Speichere: &quot;&lt;&lt;TeilString[TSid]&lt;&lt;endl;
						TSid++;	

						itn = 0;
						strcpy(CTeilString, empty.c_str());

					}
				} else {
					// Erstes Zeichen darf kein + sein
					throw eWrongSyntax();
				}
				break;
			case '-':
				if (KlammerAnz == 0){
					if (it != 0){

						// Falls 1. Zeichen soll bisheriger Teilstring nicht gespeichert werden

						TempString = &quot;&quot;;
						CTeilString[itn+1] = '\0';
						TempString = CTeilString;

						if (TempString != &quot;&quot;){
							TeilString[TSid] = CTeilString;
							TSid++;
							strcpy(CTeilString, empty.c_str());
							itn= 0;
						}

					}
				}

				CTeilString[itn] = CString[it];

				if (KlammerAnz == 0){
					CTeilString[itn+1] = '\0';
					TeilString[TSid] = CTeilString;
					TSid++;	

					itn = 0;
					strcpy(CTeilString, empty.c_str());

				}
				break;
			case '*':

				if (it != 0){
					// Falls 1. Zeichen soll bisheriger Teilstring nicht gespeichert werden
					if (KlammerAnz == 0){
						TempString = &quot;&quot;;
						CTeilString[itn+1] = '\0';
						TempString = CTeilString;

						if (TempString != &quot;&quot;){
							TeilString[TSid] = CTeilString;
							TSid++;
							strcpy(CTeilString, empty.c_str());

							itn = 0;
						}
					}

					CTeilString[itn] = CString[it];

					if (KlammerAnz == 0){
						CTeilString[itn+1] = '\0';
						TeilString[TSid] = CTeilString;
						TSid++;	

						itn = 0;
						strcpy(CTeilString, empty.c_str());
					}
				} else {
					throw eWrongSyntax();
				}				
				break;
			default:
				// keine Klammer
				TempString.append(CString[it])
				//CTeilString[itn] = CString[it];
				itn++;

				break;
		}
	}
</code></pre>
<p>Problem: Es wird nur blödsinn gespeichert in den einzelnen strings. Grund dafür ist nehm ich mal an das der CTeilString nicht komplett gelöscht wird. Auch der \0 hat nicht geholfen leider.</p>
<p>Ideen wie ich den Inhalt meines CTeilString's 1:1 übertragen kann ohne 100.000 sonderzeichen danach?</p>
<p>LG<br />
Daniel</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/211168/char-array-problem</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 21:53:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/211168.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 19 Apr 2008 19:36:23 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Char Array Problem on Sat, 19 Apr 2008 19:36:23 GMT]]></title><description><![CDATA[<p>Also, ich habe ein Problem mit einem Char Array. Ich bekomme in dem Programm einen String. Diesen muss ich dann Zeichen für Zeichen überprüfen. Der folgende Ausschnit zeigt einen Teil, wo aus einem großen String kleinere gemacht werden sollen.</p>
<p>Dazu wird der große in einen char array kopiert und dieser array dann mit einer for schleife durchwandert. Gleichzeitig gibt es einen 2. Char Array wo jedes gelesene zeichen reingeschrieben wird. Sobald ein bestimmtes zeichen gefunden wird, soll der inhalt dieses 2. char arrays in einen neuen string geschoben werden. Dann wird der char array gelöscht und kann wieder weiter neu befüllt werden. das ganze kann beliebig oft passieren.</p>
<pre><code>// Gesamten String unterteilen in viele kleine einzelne Strings
	// Zweck: Damit können jetzt die einzelnen TeilStringe getrennt voneinander
	// bearbeitet bzw ausgerechnet werden

	string TempString = &quot;&quot;;
	string *TeilString = new string[MAX+3];
	bool *TeilStringD = new bool[MAX+3];
	int TSid = 1; // TeilSting Id fängt bei 1 an bis x

	for (it = 0; it &lt; MAX; ++it) {
		switch (CString[it]) {
			case '(':

				if (KlammerAnz == 0){

					if (it != 0){
						TempString = &quot;&quot;;
						CTeilString[itn+1] = '\0';
						TempString = CTeilString;

						if (TempString != &quot;&quot;){

							TeilString[TSid] = CTeilString;
							TSid++;
							strcpy(CTeilString, empty.c_str());

							itn = 0;
						}
					}

				}
				CTeilString[itn] = CString[it];

				itn++;				

				KlammerAnz++;
				break;
			case ')':
				if (KlammerAnz &gt; 0){
					CTeilString[itn] = CString[it];
					CTeilString[itn+1] = '\0';
					TeilString[TSid] = CTeilString;
					TSid++;				

					itn = 0;
					strcpy(CTeilString, empty.c_str());

					KlammerAnz--;
				} else {
					// Klammer geschlossen ohne offener
					throw eWrongSyntax();
				}

				break;
			case '+':
				if (it != 0){
					// Falls 1. Zeichen soll bisheriger Teilstring nicht gespeichert werden
					if (KlammerAnz == 0){
						TempString = &quot;&quot;;
						CTeilString[itn+1] = '\0';
						TempString = CTeilString;

						if (TempString != &quot;&quot;){
							TeilString[TSid] = CTeilString;
							cout&lt;&lt;&quot;Speichere: &quot;&lt;&lt;TeilString[TSid]&lt;&lt;endl;
							TSid++;
							strcpy(CTeilString, empty.c_str());
							itn= 0;
						}
					}

					CTeilString[itn] = CString[it];

					if (KlammerAnz == 0){
						CTeilString[itn+1] = '\0';
						TeilString[TSid] = CTeilString;
						cout&lt;&lt;&quot;Speichere: &quot;&lt;&lt;TeilString[TSid]&lt;&lt;endl;
						TSid++;	

						itn = 0;
						strcpy(CTeilString, empty.c_str());

					}
				} else {
					// Erstes Zeichen darf kein + sein
					throw eWrongSyntax();
				}
				break;
			case '-':
				if (KlammerAnz == 0){
					if (it != 0){

						// Falls 1. Zeichen soll bisheriger Teilstring nicht gespeichert werden

						TempString = &quot;&quot;;
						CTeilString[itn+1] = '\0';
						TempString = CTeilString;

						if (TempString != &quot;&quot;){
							TeilString[TSid] = CTeilString;
							TSid++;
							strcpy(CTeilString, empty.c_str());
							itn= 0;
						}

					}
				}

				CTeilString[itn] = CString[it];

				if (KlammerAnz == 0){
					CTeilString[itn+1] = '\0';
					TeilString[TSid] = CTeilString;
					TSid++;	

					itn = 0;
					strcpy(CTeilString, empty.c_str());

				}
				break;
			case '*':

				if (it != 0){
					// Falls 1. Zeichen soll bisheriger Teilstring nicht gespeichert werden
					if (KlammerAnz == 0){
						TempString = &quot;&quot;;
						CTeilString[itn+1] = '\0';
						TempString = CTeilString;

						if (TempString != &quot;&quot;){
							TeilString[TSid] = CTeilString;
							TSid++;
							strcpy(CTeilString, empty.c_str());

							itn = 0;
						}
					}

					CTeilString[itn] = CString[it];

					if (KlammerAnz == 0){
						CTeilString[itn+1] = '\0';
						TeilString[TSid] = CTeilString;
						TSid++;	

						itn = 0;
						strcpy(CTeilString, empty.c_str());
					}
				} else {
					throw eWrongSyntax();
				}				
				break;
			default:
				// keine Klammer
				TempString.append(CString[it])
				//CTeilString[itn] = CString[it];
				itn++;

				break;
		}
	}
</code></pre>
<p>Problem: Es wird nur blödsinn gespeichert in den einzelnen strings. Grund dafür ist nehm ich mal an das der CTeilString nicht komplett gelöscht wird. Auch der \0 hat nicht geholfen leider.</p>
<p>Ideen wie ich den Inhalt meines CTeilString's 1:1 übertragen kann ohne 100.000 sonderzeichen danach?</p>
<p>LG<br />
Daniel</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494793</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494793</guid><dc:creator><![CDATA[abzy]]></dc:creator><pubDate>Sat, 19 Apr 2008 19:36:23 GMT</pubDate></item><item><title><![CDATA[Reply to Char Array Problem on Sun, 20 Apr 2008 09:47:10 GMT]]></title><description><![CDATA[<p>Um einen string aufzudröseln und beliebig neu zusammenzusetzen sollte man zeichenweise vorgehen und das abschliessende Nullzeichen '\0' explizit selbst setzen. Etwa so:<br />
char string1[]=&quot;Hallo Leute&quot;;<br />
char string2[24];<br />
int i,c;<br />
for(i=0;i&lt;5;i++)<br />
{<br />
c=string1[i];<br />
string2[i]=c;<br />
}<br />
i++;<br />
string2[i]='\0';<br />
strcpy(string2,&quot; Mann&quot;);</p>
<p>Merke: Characters sind Integer-Werte. Strings sind eine Folge von Integer-Werten mit dem Nullzeichen zur Kennzeichnung des Endes. daddeldu</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494936</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494936</guid><dc:creator><![CDATA[berniebutt]]></dc:creator><pubDate>Sun, 20 Apr 2008 09:47:10 GMT</pubDate></item><item><title><![CDATA[Reply to Char Array Problem on Mon, 21 Apr 2008 11:03:20 GMT]]></title><description><![CDATA[<p>berniebutt schrieb:</p>
<blockquote>
<p>Um einen string aufzudröseln und beliebig neu zusammenzusetzen sollte man ...</p>
</blockquote>
<p>(std::)string nehmen. Eigentlich sehe ich keinen Grund, substr(), find(), operator=() und replace() zum 1001. Mal nachzuprogrammieren (ausser evtl. zur persönlichen Erbauung).</p>
<p>Siehe auch</p>
<p>abzy schrieb:</p>
<blockquote>
<p>Also, ich habe ein Problem mit einem Char Array. ...</p>
</blockquote>
<p><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="😉"
    /> <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>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1495546</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1495546</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Mon, 21 Apr 2008 11:03:20 GMT</pubDate></item></channel></rss>