<?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[Kommandozeilenprogramm in C++]]></title><description><![CDATA[<p>Ich habe einen Algorithmus geschrieben, der einen String umdreht. Nun soll ich daraus ein Kommandozeilenprogramm entwickeln, das sich mit diesen Parametern steuern lässt. Ich möchte also über die Eingabeaufforderung ein Wort eingeben, welches umgedreht werden soll.<br />
Kann mir vielleicht jemand sagen, wo im folgenden Quelltext der Fehler ist?<br />
Das Problem muss in dr main -Fkt sein..</p>
<pre><code># include &lt;stdio.h&gt;
# include &lt;string.h&gt;

int StringLaenge(string) 
{
   int laenge=0;
   laenge = strlen(string);
   return laenge;

}

char* StringUmdrehen(char string[81],int laenge)
{
	int i;
	int j=0;
	char *pszstring;
	char *psztemp;
	char stringtemp[81];

    strcpy(stringtemp, string);
    pszstring=string;
	psztemp=stringtemp;

	for (i = laenge-1; i &gt;= 0; i--)

	{
    *(pszstring+j)=*(psztemp+i);
    j++;

    }
    return stringtemp;
}

int main (int iArg, char *AszArg[]) 
{
    int iIndex = 0;

	if (iArg&lt;1) return 1;

	while (iIndex&lt;iArg)
	{
	printf(&quot;\n%i&quot;,iArg);

	printf(&quot;\n%s&quot;,StringUmdrehen(AszArg[iIndex],iArg));

	printf(&quot;\n%s&quot;,AszArg);

	iIndex++;

	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/147712/kommandozeilenprogramm-in-c</link><generator>RSS for Node</generator><lastBuildDate>Fri, 04 Sep 2026 08:45:14 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/147712.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 19 May 2006 10:11:42 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Kommandozeilenprogramm in C++ on Fri, 19 May 2006 10:11:42 GMT]]></title><description><![CDATA[<p>Ich habe einen Algorithmus geschrieben, der einen String umdreht. Nun soll ich daraus ein Kommandozeilenprogramm entwickeln, das sich mit diesen Parametern steuern lässt. Ich möchte also über die Eingabeaufforderung ein Wort eingeben, welches umgedreht werden soll.<br />
Kann mir vielleicht jemand sagen, wo im folgenden Quelltext der Fehler ist?<br />
Das Problem muss in dr main -Fkt sein..</p>
<pre><code># include &lt;stdio.h&gt;
# include &lt;string.h&gt;

int StringLaenge(string) 
{
   int laenge=0;
   laenge = strlen(string);
   return laenge;

}

char* StringUmdrehen(char string[81],int laenge)
{
	int i;
	int j=0;
	char *pszstring;
	char *psztemp;
	char stringtemp[81];

    strcpy(stringtemp, string);
    pszstring=string;
	psztemp=stringtemp;

	for (i = laenge-1; i &gt;= 0; i--)

	{
    *(pszstring+j)=*(psztemp+i);
    j++;

    }
    return stringtemp;
}

int main (int iArg, char *AszArg[]) 
{
    int iIndex = 0;

	if (iArg&lt;1) return 1;

	while (iIndex&lt;iArg)
	{
	printf(&quot;\n%i&quot;,iArg);

	printf(&quot;\n%s&quot;,StringUmdrehen(AszArg[iIndex],iArg));

	printf(&quot;\n%s&quot;,AszArg);

	iIndex++;

	}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1060767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060767</guid><dc:creator><![CDATA[Anouk]]></dc:creator><pubDate>Fri, 19 May 2006 10:11:42 GMT</pubDate></item><item><title><![CDATA[Reply to Kommandozeilenprogramm in C++ on Fri, 19 May 2006 10:29:43 GMT]]></title><description><![CDATA[<p>Erstens: sAszArg ist ein Array von Strings - da hast du vermutlich den Index-Operator vergessen:</p>
<pre><code class="language-cpp">printf(&quot;\n%s&quot;,AszArg[iIndex]);
</code></pre>
<p>Zweitens: Der zweite Parameter deiner Umkehren-Funktion ist die <strong>LÄNGE</strong> des umzukehrenden Strings, nicht die Länge des argv-Arrays - die mußt du per strlen() berechnen.<br />
(btw würde ich die Länge sowieso in der Funktion selber berechnen)</p>
<p>Drittens: Du gibst einen Pointer auf ein lokales Array zurück - dessen Speicherberech dürfte vom nächsten Funktionsaufruf (printf()) schon wieder neu genutzt werden.</p>
<p>Viertens: Wenn du schon mit C++ arbeitest, kannst du auch dessen Neuerungen verwenden: std::string, cout, std::reverse(),...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1060783</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060783</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 19 May 2006 10:29:43 GMT</pubDate></item><item><title><![CDATA[Reply to Kommandozeilenprogramm in C++ on Fri, 19 May 2006 10:30:27 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">printf(&quot;\n%s&quot;,AszArg);
</code></pre>
<p>AszArg ist ein Array von Zeigern auf Strings<br />
also:</p>
<pre><code class="language-cpp">printf(&quot;\n%s&quot;,AszArg[iIndex]);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1060785</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060785</guid><dc:creator><![CDATA[Vertexwahn]]></dc:creator><pubDate>Fri, 19 May 2006 10:30:27 GMT</pubDate></item><item><title><![CDATA[Reply to Kommandozeilenprogramm in C++ on Fri, 19 May 2006 10:52:59 GMT]]></title><description><![CDATA[<p>Leider darf ich die Neuerungen nicht verwenden. Das ist in der Aufgabenstellung untersagt.<br />
Werde jetzt erstmal schauen, was sich mit den Verbesserungsvorschlägen anfangen kann. Danke erstmal!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1060811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060811</guid><dc:creator><![CDATA[Anouk]]></dc:creator><pubDate>Fri, 19 May 2006 10:52:59 GMT</pubDate></item><item><title><![CDATA[Reply to Kommandozeilenprogramm in C++ on Fri, 19 May 2006 10:53:50 GMT]]></title><description><![CDATA[<p>dann bist du vielleicht besser im C Unterforum aufgehoben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1060812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060812</guid><dc:creator><![CDATA[Vertexwahn]]></dc:creator><pubDate>Fri, 19 May 2006 10:53:50 GMT</pubDate></item><item><title><![CDATA[Reply to Kommandozeilenprogramm in C++ on Fri, 19 May 2006 11:10:03 GMT]]></title><description><![CDATA[<p>Ok. Merk ich mir, falls ich mal wieder was zu fragen habe..</p>
<pre><code># include &lt;stdio.h&gt;
# include &lt;string.h&gt;

int StringLaenge(string) 
{
   int laenge=0;
   laenge = strlen(string);
   return laenge;

}

char* StringUmdrehen(char string[81],int laenge)
{
	int i;
	int j=0;
	char *pszstring;
	char *psztemp;
	char stringtemp[81];

    strcpy(stringtemp, string);
    pszstring=string;
	psztemp=stringtemp;

	for (i = laenge-1; i &gt;= 0; i--)

	{
    *(pszstring+j)=*(psztemp+i);
    j++;

}
    return stringtemp;
}

int main (void) 
{
	char szString[81]= &quot;Software Engineering&quot;;
    int iLaenge=0;

	iLaenge=StringLaenge(szString);

	printf(&quot;\n%i&quot;,iLaenge);

	printf(&quot;\n%s&quot;,StringUmdrehen(szString,iLaenge));

	printf(&quot;\n%s&quot;,szString);

	return 0;
}
</code></pre>
<p>Wie lässt sich das mit dem Zeiger meistern? (Pkt. 3)<br />
Wäre nett, wenn ich noch ne &quot;kleine&quot; Hilfestellung kriegen würd..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1060828</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060828</guid><dc:creator><![CDATA[Anouk]]></dc:creator><pubDate>Fri, 19 May 2006 11:10:03 GMT</pubDate></item><item><title><![CDATA[Reply to Kommandozeilenprogramm in C++ on Fri, 19 May 2006 11:17:48 GMT]]></title><description><![CDATA[<p>Anouk schrieb:</p>
<blockquote>
<p>Wie lässt sich das mit dem Zeiger meistern? (Pkt. 3)</p>
</blockquote>
<p>a) Statische Variable verwenden (die bleibt auch nach Ende der Funktion gültig).</p>
<pre><code class="language-cpp">char* StringUmdrehen(char string[81],int laenge)
{
    int i;
    int j=0;
    static char stringtemp[81];
    ...
}
</code></pre>
<p>b) Speicher per malloc() reservieren (und im Hauptprogramm per free() wieder freigeben)</p>
<pre><code class="language-cpp">char* StringUmdrehen(char string[81],int laenge)
{
    int i;
    int j=0;
    char* stringtemp = malloc(laenge+1);
    ...
}

//in main()
char* res = StringUmdrehen(text,len);
printf(&quot;%s&quot;,res);
free(res);
</code></pre>
<p>c) Zielpuffer vom Hauptprogramm übergeben lassen</p>
<pre><code class="language-cpp">char* StringUmdrehen(char string[81],char result[81],int laenge)
{
    int i;
    int j=0;
    ...
    //anstelle von 'stringtemp' 'result' verwenden
    return result;
}

//in main()
char buffer[81];
printf(&quot;%s&quot;,StringUmdrehen(text,buffer,len);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1060834</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060834</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 19 May 2006 11:17:48 GMT</pubDate></item><item><title><![CDATA[Reply to Kommandozeilenprogramm in C++ on Fri, 19 May 2006 11:58:09 GMT]]></title><description><![CDATA[<p>Weshalb dreht ermir nur die ersten beiden Buchstaben um?<br />
Das kann ja jetzt nicht mehr am stringtemp liegen oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1060888</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060888</guid><dc:creator><![CDATA[Anouk]]></dc:creator><pubDate>Fri, 19 May 2006 11:58:09 GMT</pubDate></item><item><title><![CDATA[Reply to Kommandozeilenprogramm in C++ on Fri, 19 May 2006 12:00:47 GMT]]></title><description><![CDATA[<p>Was für einen Wert übergibst du denn als 'laenge' an deine Funktion?<br />
(btw bin ich immer noch der Meinung, daß die Funktion die Länge auch selber berechnen könnte)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1060891</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060891</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 19 May 2006 12:00:47 GMT</pubDate></item><item><title><![CDATA[Reply to Kommandozeilenprogramm in C++ on Fri, 19 May 2006 12:08:00 GMT]]></title><description><![CDATA[<p>Na er errechnet doch selbst unter dem Unterprogramm StringLaenge die Länge des Strings, den der Anwender in der Eingabeaufforderung eingibt...</p>
<pre><code># include &lt;stdio.h&gt;
# include &lt;string.h&gt;

int StringLaenge(string) 
{
   int laenge=0;
   laenge = strlen(string);
   return laenge;

}

char* StringUmdrehen(char string[81],int laenge)
{
	int i;
	int j=0;
	char *pszstring;
	char *psztemp;
	static char stringtemp[81];

    strcpy(stringtemp, string);
    pszstring=string;
	psztemp=stringtemp;

	for (i = laenge-1; i &gt;= 0; i--)

	{
    *(pszstring+j)=*(psztemp+i);
    j++;

    }
    return stringtemp;
}

int main (int iArg, char *AszArg[]) 
{
    int iIndex = 0;
    int iLaenge=0;

	if (iArg&lt;1) return 1;

	while (iIndex&lt;iArg)
	{
	iLaenge=StringLaenge(AszArg);
    printf(&quot;\n%i&quot;,iLaenge);

	printf(&quot;\n%s&quot;,StringUmdrehen(AszArg[iIndex],iArg));

	printf(&quot;\n%s&quot;,AszArg[iIndex]);

	iIndex++;

	}
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1060903</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060903</guid><dc:creator><![CDATA[Anouk]]></dc:creator><pubDate>Fri, 19 May 2006 12:08:00 GMT</pubDate></item><item><title><![CDATA[Reply to Kommandozeilenprogramm in C++ on Fri, 19 May 2006 12:11:17 GMT]]></title><description><![CDATA[<p>Ja, du BERECHNEST die Stringlänge, aber davon bemerkt die Umkehren-Funktion nichts mehr - die bekommt als zweiten Parameter iArg (die Anzahl der Kommando-Parameter) und nicht iLaenge.</p>
<p>PS: Warum eigentlich nicht so?</p>
<pre><code class="language-cpp">char* StringUmkehren(char str[81])
{
  int laenge = strlen(str);
  ...
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1060910</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1060910</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 19 May 2006 12:11:17 GMT</pubDate></item></channel></rss>