<?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- Pointer- und logik Problem]]></title><description><![CDATA[<p>Hyhy<br />
ich habe vor ein paar Stunden angefangen ein kleines Programm zur<br />
Übung zu schreiben, nur irgendwie komme ich jetzt leider nicht mehr weiter <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> :<br />
Wieso kann ich meine Char- Zeiger nicht durch die Funktion, welche<br />
ich geschrieben habe bearbeiten?<br />
(ps: Da ich die Funktion selbst nicht als Fehlerursache betrachte, poste ich sie hier auch nicht.)</p>
<p>zum Programm: Ich habe festgestellt, dass mein Programm, sofern es Fehlerfrei<br />
laufen würde, bei jeder schließenden geschweiften Klammer ein Tab zu viel<br />
ausgeben würde. Kann mir jemand bitte ein paar Tipps geben, wie ich dies verhindern kann?</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;rwfile.h&gt;
#include&lt;string&gt;
using namespace std;

class chl
{
	private:
		char *source;
		char *destination;
		int *numbers;
		int *brace_o;
		int *brace_c;
		int *loop;
		bool manual;
		bool mark_0;
		string tab;

	public:
		chl();
		bool show();
		bool dialog();
		bool work();
};

chl::chl()
{
	loop = new int; *loop = 1;
	brace_o = new int; *brace_o = 0;
	brace_c = new int; *brace_c = 0;
	numbers = new int; *numbers = 0;
	manual = false;
	mark_0 = false;
	source = new char[30];
	destination = new char[30];
	tab = &quot;	&quot;;
}

bool chl::dialog()
{
	bool manual_clear = false;

	cout &lt;&lt; &quot;automatic(0) or manual(1)? &quot;;
	cin &gt;&gt; manual;

	cout &lt;&lt; &quot;source			:&quot;;
	cin &gt;&gt; source;	

	cout &lt;&lt; &quot;destination	:&quot;;
	cin &gt;&gt; destination;

	switch(manual)
	{

		case'0' :
		{
			cout &lt;&lt; &quot;lines to read                     :&quot;;
			cin &gt;&gt; *numbers;

 			cout &lt;&lt; &quot;enter Tab(\&quot;automatic\&quot; for default  :&quot;;
 			cin &gt;&gt; tab;
 			if(tab == &quot;automatic&quot;) tab = &quot;	&quot;;

			cout &lt;&lt; &quot;how much brackets are open                 :&quot;;
			cin &gt;&gt; *brace_o;

			cout &lt;&lt; &quot;clear bevore write(1)           :&quot;;
			cin &gt;&gt; manual_clear;
			if(manual_clear == 1) clear(*destination);		// Das tut komischerweise, bzw. mein Compiler erkennt hier noch keinen Fehler...

		break;	
		}

		work();

	}
}

bool chl::work()
{
	string in;
	while(*loop &lt;= *numbers)
 	{
 		read(in, *source, *loop);   // ...Das nicht mehr

 		for(int i=0; i &lt; in.length(); ++i)
 		{
			     if(in[i] == '{') ++*brace_o;
			else if(in[i] == '}') --*brace_o;
		}

		if(*brace_o &gt;= 1)
		{ 
			cout &lt;&lt; &quot;(&quot; &lt;&lt; *brace_o &lt;&lt; &quot;)&quot; &lt;&lt; in &lt;&lt; endl;

			if(mark_0) write(&quot;\n&quot;, *destination);

			/* write(&quot;(&quot;, destination);
			write(brace_o, destination);
			write(&quot;)&quot;, destination); */
			write(in, *destination);
			write(&quot;\n&quot;, *destination);
			for(int i=1; i&lt;=*brace_o; ++i) write(tab, *destination);

			mark_0 = false;

		}       
		else if (*brace_o == 0) { write(&quot;\n&quot;, *destination); write(in, *destination); mark_0 = true;}

 		++*loop;
	}
}

int main()
{
	chl c;
	c.dialog();
	wait;
}
</code></pre>
<p>Ach ja: ich bin noch nicht fertig mit dem Programm, deshalb habe ich auch noch kein delete[] angewandt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Danke im vorraus! <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/topic/205384/char-pointer-und-logik-problem</link><generator>RSS for Node</generator><lastBuildDate>Fri, 09 Oct 2026 02:20:35 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/205384.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 13 Feb 2008 18:39:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to char- Pointer- und logik Problem on Wed, 13 Feb 2008 18:39:03 GMT]]></title><description><![CDATA[<p>Hyhy<br />
ich habe vor ein paar Stunden angefangen ein kleines Programm zur<br />
Übung zu schreiben, nur irgendwie komme ich jetzt leider nicht mehr weiter <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> :<br />
Wieso kann ich meine Char- Zeiger nicht durch die Funktion, welche<br />
ich geschrieben habe bearbeiten?<br />
(ps: Da ich die Funktion selbst nicht als Fehlerursache betrachte, poste ich sie hier auch nicht.)</p>
<p>zum Programm: Ich habe festgestellt, dass mein Programm, sofern es Fehlerfrei<br />
laufen würde, bei jeder schließenden geschweiften Klammer ein Tab zu viel<br />
ausgeben würde. Kann mir jemand bitte ein paar Tipps geben, wie ich dies verhindern kann?</p>
<pre><code class="language-cpp">#include&lt;iostream&gt;
#include&lt;rwfile.h&gt;
#include&lt;string&gt;
using namespace std;

class chl
{
	private:
		char *source;
		char *destination;
		int *numbers;
		int *brace_o;
		int *brace_c;
		int *loop;
		bool manual;
		bool mark_0;
		string tab;

	public:
		chl();
		bool show();
		bool dialog();
		bool work();
};

chl::chl()
{
	loop = new int; *loop = 1;
	brace_o = new int; *brace_o = 0;
	brace_c = new int; *brace_c = 0;
	numbers = new int; *numbers = 0;
	manual = false;
	mark_0 = false;
	source = new char[30];
	destination = new char[30];
	tab = &quot;	&quot;;
}

bool chl::dialog()
{
	bool manual_clear = false;

	cout &lt;&lt; &quot;automatic(0) or manual(1)? &quot;;
	cin &gt;&gt; manual;

	cout &lt;&lt; &quot;source			:&quot;;
	cin &gt;&gt; source;	

	cout &lt;&lt; &quot;destination	:&quot;;
	cin &gt;&gt; destination;

	switch(manual)
	{

		case'0' :
		{
			cout &lt;&lt; &quot;lines to read                     :&quot;;
			cin &gt;&gt; *numbers;

 			cout &lt;&lt; &quot;enter Tab(\&quot;automatic\&quot; for default  :&quot;;
 			cin &gt;&gt; tab;
 			if(tab == &quot;automatic&quot;) tab = &quot;	&quot;;

			cout &lt;&lt; &quot;how much brackets are open                 :&quot;;
			cin &gt;&gt; *brace_o;

			cout &lt;&lt; &quot;clear bevore write(1)           :&quot;;
			cin &gt;&gt; manual_clear;
			if(manual_clear == 1) clear(*destination);		// Das tut komischerweise, bzw. mein Compiler erkennt hier noch keinen Fehler...

		break;	
		}

		work();

	}
}

bool chl::work()
{
	string in;
	while(*loop &lt;= *numbers)
 	{
 		read(in, *source, *loop);   // ...Das nicht mehr

 		for(int i=0; i &lt; in.length(); ++i)
 		{
			     if(in[i] == '{') ++*brace_o;
			else if(in[i] == '}') --*brace_o;
		}

		if(*brace_o &gt;= 1)
		{ 
			cout &lt;&lt; &quot;(&quot; &lt;&lt; *brace_o &lt;&lt; &quot;)&quot; &lt;&lt; in &lt;&lt; endl;

			if(mark_0) write(&quot;\n&quot;, *destination);

			/* write(&quot;(&quot;, destination);
			write(brace_o, destination);
			write(&quot;)&quot;, destination); */
			write(in, *destination);
			write(&quot;\n&quot;, *destination);
			for(int i=1; i&lt;=*brace_o; ++i) write(tab, *destination);

			mark_0 = false;

		}       
		else if (*brace_o == 0) { write(&quot;\n&quot;, *destination); write(in, *destination); mark_0 = true;}

 		++*loop;
	}
}

int main()
{
	chl c;
	c.dialog();
	wait;
}
</code></pre>
<p>Ach ja: ich bin noch nicht fertig mit dem Programm, deshalb habe ich auch noch kein delete[] angewandt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Danke im vorraus! <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/1455279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1455279</guid><dc:creator><![CDATA[double *T]]></dc:creator><pubDate>Wed, 13 Feb 2008 18:39:03 GMT</pubDate></item><item><title><![CDATA[Reply to char- Pointer- und logik Problem on Wed, 13 Feb 2008 18:40:19 GMT]]></title><description><![CDATA[<p>Destruktor ...egal wie weit du bist!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1455280</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1455280</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 13 Feb 2008 18:40:19 GMT</pubDate></item><item><title><![CDATA[Reply to char- Pointer- und logik Problem on Wed, 13 Feb 2008 18:46:32 GMT]]></title><description><![CDATA[<p>Also ich frage mich vor allem, wieso du so viele new für normale int's benutzt.</p>
<p>Ansonsten wäre es ev. noch hilfreich, wenn du den Fehler vom Compiler posten würdest...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1455287</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1455287</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Wed, 13 Feb 2008 18:46:32 GMT</pubDate></item><item><title><![CDATA[Reply to char- Pointer- und logik Problem on Wed, 13 Feb 2008 19:06:22 GMT]]></title><description><![CDATA[<p>erstmal danke für eure schnellen Antworten...</p>
<p>(D)Evil schrieb:</p>
<blockquote>
<p>Destruktor ...egal wie weit du bist!</p>
</blockquote>
<p>jaa... eigentlich hast du vollkommen recht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>drakon schrieb:</p>
<blockquote>
<p>Also ich frage mich vor allem, wieso du so viele new für normale int's benutzt.</p>
</blockquote>
<p>naja... wie schon gesagt: zur übung <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>Die Fehlermeldung:</p>
<blockquote>
<p>In member function <code>bool chl::work()': 85 invalid conversion from \</code>char' to `char*'<br />
85 initializing argument 2 of `bool read(std::string&amp;, char*, int)'</p>
</blockquote>
<p>die Zeiger sind doch char*, dachte ich, oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1455298</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1455298</guid><dc:creator><![CDATA[double *T]]></dc:creator><pubDate>Wed, 13 Feb 2008 19:06:22 GMT</pubDate></item><item><title><![CDATA[Reply to char- Pointer- und logik Problem on Wed, 13 Feb 2008 19:16:15 GMT]]></title><description><![CDATA[<p>Hmm ne ist nen char:</p>
<pre><code class="language-cpp">read(in, *source, *loop);
</code></pre>
<p>Du dereferenzierst hier source(und loop ...), was aber als</p>
<pre><code class="language-cpp">char *source;
</code></pre>
<p>. D.h. du übergibst da gerade das 1. Zeichen des Strings source. Einfach nicht dereferenzieren!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1455312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1455312</guid><dc:creator><![CDATA[*D*Evil]]></dc:creator><pubDate>Wed, 13 Feb 2008 19:16:15 GMT</pubDate></item><item><title><![CDATA[Reply to char- Pointer- und logik Problem on Wed, 13 Feb 2008 20:07:31 GMT]]></title><description><![CDATA[<p>(D)Evil schrieb:</p>
<blockquote>
<p>Einfach nicht dereferenzieren!</p>
</blockquote>
<p>naja... aber wenn ich nicht dereferenziere, fängt mein Programm gar nicht an zu arbeiten weil es doch gar keine werte<br />
bekommt?! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> (... gibt es eine möglichkeit die Dereferenzierung beizu<br />
behalten?)</p>
<p>EDIT: Achso: und wenn ich den source- Pointer ersetze durch &quot;char source[30]&quot; dann wäre dies doch auch ein Zeiger, oder (aber stimmt, damit geht es)???</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1455322</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1455322</guid><dc:creator><![CDATA[double *T]]></dc:creator><pubDate>Wed, 13 Feb 2008 20:07:31 GMT</pubDate></item></channel></rss>