<?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[Wie geht die Wertübergabe eines char name[] an die Main Funktion?]]></title><description><![CDATA[<p>Hallo an alle,</p>
<p>ich habe mal versucht nummerierte Dateinamen zu erstellen. Das funktioniert auch ganz gut soweit.</p>
<p>Nun habe ich nur noch das Problem wie ich in der Main auf diesen &quot;namen&quot; zugreigen kann um ihn zu verwenden, z.B. beim erstellen von neuen Dateien.</p>
<p>Habe schon einiges versucht, aber ich blicke es irgendwie ned:(</p>
<p>Kann mir jm. geschwind helfen?</p>
<p>Danke und Grüße</p>
<p>Fill</p>
<pre><code class="language-cpp">using namespace std;

void dateiname (int &amp;i);

int main (void)
{

	int i=0;
	int a=0;

	for(a=0; a&lt;10; a++)
	{
		i++;
		dateiname (i);
		cout &lt;&lt; i &lt;&lt; endl;
//		cout &lt;&lt; ??name?? &lt;&lt; endl;		//Wie bekomme ich aus der Funktion &quot;dateiname&quot; das name in der Main visualisiert?
	}									// wie geht der Zugriff?
		return 0;
}

void dateiname (int &amp;i)
{
	char name[80];

	sprintf( name, &quot;%d.txt&quot;, i ); 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/306771/wie-geht-die-wertübergabe-eines-char-name-an-die-main-funktion</link><generator>RSS for Node</generator><lastBuildDate>Fri, 07 Aug 2026 04:39:17 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/306771.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 07 Aug 2012 08:26:45 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Wie geht die Wertübergabe eines char name[] an die Main Funktion? on Tue, 07 Aug 2012 08:26:45 GMT]]></title><description><![CDATA[<p>Hallo an alle,</p>
<p>ich habe mal versucht nummerierte Dateinamen zu erstellen. Das funktioniert auch ganz gut soweit.</p>
<p>Nun habe ich nur noch das Problem wie ich in der Main auf diesen &quot;namen&quot; zugreigen kann um ihn zu verwenden, z.B. beim erstellen von neuen Dateien.</p>
<p>Habe schon einiges versucht, aber ich blicke es irgendwie ned:(</p>
<p>Kann mir jm. geschwind helfen?</p>
<p>Danke und Grüße</p>
<p>Fill</p>
<pre><code class="language-cpp">using namespace std;

void dateiname (int &amp;i);

int main (void)
{

	int i=0;
	int a=0;

	for(a=0; a&lt;10; a++)
	{
		i++;
		dateiname (i);
		cout &lt;&lt; i &lt;&lt; endl;
//		cout &lt;&lt; ??name?? &lt;&lt; endl;		//Wie bekomme ich aus der Funktion &quot;dateiname&quot; das name in der Main visualisiert?
	}									// wie geht der Zugriff?
		return 0;
}

void dateiname (int &amp;i)
{
	char name[80];

	sprintf( name, &quot;%d.txt&quot;, i ); 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2239517</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2239517</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 07 Aug 2012 08:26:45 GMT</pubDate></item><item><title><![CDATA[Reply to Wie geht die Wertübergabe eines char name[] an die Main Funktion? on Tue, 07 Aug 2012 08:30:28 GMT]]></title><description><![CDATA[<p>1.) Deine Funktion braucht einen Rueckgabewert oder du musst globale Variablen benutzen.<br />
2.) Es empfielt sich, std::string zu benutzen!<br />
3.) Fuer Grundlagenwissen eignen sich Buecher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2239518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2239518</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 07 Aug 2012 08:30:28 GMT</pubDate></item><item><title><![CDATA[Reply to Wie geht die Wertübergabe eines char name[] an die Main Funktion? on Tue, 07 Aug 2012 09:00:29 GMT]]></title><description><![CDATA[<p>1.) Über eine globale Variable wollte ich es nicht machen. Das ich einen Rückgabewert benötige war mir bewusst (sorry das ich das nicht kenntlich gemacht habe.)</p>
<p>3.) Was hilfreich wäre als ein Buch zu empfehlen, da man dies ja meist schon hat und nicht fündig wird, eher den Bereich nachdem man suchen muss, da man bei so Todschlägern erstmal das Richtige finden muss, wenn man nicht weiß nach was man suchen muss.</p>
<p>Nun gut...</p>
<p>Ist es empfehlenswert einen Zeiger zurückzugeben und da es ja dynamisch ist, mit new und delete zu arbeiten?</p>
<p>2.) Danke für den hinweis ich werde dannach schauen..</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2239529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2239529</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 07 Aug 2012 09:00:29 GMT</pubDate></item><item><title><![CDATA[Reply to Wie geht die Wertübergabe eines char name[] an die Main Funktion? on Tue, 07 Aug 2012 09:06:48 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#include &lt;string&gt;

...

string dateiname (int &amp;i)
{
    char name[80];

    sprintf( name, &quot;%d.txt&quot;, i );
    string ret(name);
    return ret;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2239531</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2239531</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 07 Aug 2012 09:06:48 GMT</pubDate></item><item><title><![CDATA[Reply to Wie geht die Wertübergabe eines char name[] an die Main Funktion? on Tue, 07 Aug 2012 09:09:48 GMT]]></title><description><![CDATA[<p>oder einfach:</p>
<pre><code class="language-cpp">std::string dateiname = std::to_string(i)+&quot;.txt&quot;;
</code></pre>
<blockquote>
<p>Ist es empfehlenswert einen Zeiger zurückzugeben und da es ja dynamisch ist, mit new und delete zu arbeiten?</p>
</blockquote>
<p>Nein, Zeiger werden in C++ nur sehr selten gebraucht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2239533</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2239533</guid><dc:creator><![CDATA[knivil]]></dc:creator><pubDate>Tue, 07 Aug 2012 09:09:48 GMT</pubDate></item><item><title><![CDATA[Reply to Wie geht die Wertübergabe eines char name[] an die Main Funktion? on Tue, 07 Aug 2012 09:14:07 GMT]]></title><description><![CDATA[<p>FillColin schrieb:</p>
<blockquote>
<p>Ist es empfehlenswert einen Zeiger zurückzugeben und da es ja dynamisch ist, mit new und delete zu arbeiten?</p>
</blockquote>
<p>Nein, absolut nicht, da du mit new allokierten Speicher ja auch freigeben musst. Wo machst du das dann? Überlässt du das der aufrufenden Stelle, so wie hier?</p>
<pre><code class="language-cpp">char *name=dateiname(i);
//...
delete[] name;
</code></pre>
<p>Unschön und gefährlich. Wenn du (oder ein anderer!) die Funktion nach einiger Zeit wieder verwendest, weißt du u.U. gar nicht mehr, dass du hier auch wieder Speicher freigeben musst =&gt; Speicherleck.</p>
<p>Machst du eine Extra-Funktion zum Aufräumen und bietest die beiden dann quasi als Paar an, so wie hier?</p>
<pre><code class="language-cpp">char *name=dateiname_new(i);
//...
dateiname_delete();
</code></pre>
<p>Unschön und unnötig. Von einer Funktion, die nur einen Dateinamen generieren soll, erwartet man, dass sie unkompliziert ist. Das hier ist Overkill.</p>
<p>Nimm einfach std::string, dann hast du keine Sorgen mehr in der Richtung. Die Klasse übernimmt das Speicher-Management für dich, du kannst sie problemlos aus Funktionen zurückgeben usw. Ein Beispiel hab es ja schon von Belli.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2239536</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2239536</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 07 Aug 2012 09:14:07 GMT</pubDate></item><item><title><![CDATA[Reply to Wie geht die Wertübergabe eines char name[] an die Main Funktion? on Tue, 07 Aug 2012 09:37:46 GMT]]></title><description><![CDATA[<p>Gang und gäbe ist, einen Puffer zu füllen, den der Benutzer angibt...Gang und gäbe in C jedenfalls.</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;cstdio&gt;

void dateiname (char* buf, std::size_t size, int i){
  std::snprintf( buf, size, &quot;%d.txt&quot;, i );
}

int main(){
  const std::size_t size = 80;
  char buf[size];
  dateiname(buf, size, 42);
  std::cout &lt;&lt; buf &lt;&lt; '\n';
}
</code></pre>
<p>Das sieht häßlich aus und ist auch ungewohnt für C++ Programmierer.<br />
Ich schließe mich daher meinen Vorrednern, die Dir std::string empfehlen...</p>
<p>PS: Der Gipfel:</p>
<pre><code class="language-cpp">// :(
const char* dateiname(int i)
{
  static char buf[80];
  std::snprintf( buf, 80, &quot;%d.txt&quot;, i );
  return buf;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2239548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2239548</guid><dc:creator><![CDATA[auch für std__string!]]></dc:creator><pubDate>Tue, 07 Aug 2012 09:37:46 GMT</pubDate></item><item><title><![CDATA[Reply to Wie geht die Wertübergabe eines char name[] an die Main Funktion? on Tue, 07 Aug 2012 09:44:14 GMT]]></title><description><![CDATA[<p>knivil schrieb:</p>
<blockquote>
<p>oder einfach:</p>
<pre><code class="language-cpp">std::string dateiname = std::to_string(i)+&quot;.txt&quot;;
</code></pre>
</blockquote>
<p>Ergänzung: to_string gibt's aber erst ab C++11. Eine Alternative wäre boost::lexical_cast.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2239550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2239550</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Tue, 07 Aug 2012 09:44:14 GMT</pubDate></item><item><title><![CDATA[Reply to Wie geht die Wertübergabe eines char name[] an die Main Funktion? on Tue, 07 Aug 2012 09:53:48 GMT]]></title><description><![CDATA[<p>Herzlichen Dank an alle für die Antworten und die Hinweise, wie man es auf jedenfall nicht machen soll..</p>
<p>grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2239554</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2239554</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Tue, 07 Aug 2012 09:53:48 GMT</pubDate></item><item><title><![CDATA[Reply to Wie geht die Wertübergabe eines char name[] an die Main Funktion? on Tue, 07 Aug 2012 11:16:20 GMT]]></title><description><![CDATA[<p>auch für std__string! schrieb:</p>
<blockquote>
<pre><code class="language-cpp">void dateiname (char* buf, std::size_t size, int i){
  std::snprintf( buf, size, &quot;%d.txt&quot;, i );
}

int main(){
  const std::size_t size = 80;
  char buf[size];
  dateiname(buf, size, 42);
  std::cout &lt;&lt; buf &lt;&lt; '\n';
}
</code></pre>
<p>Das sieht häßlich aus und ist auch ungewohnt für C++ Programmierer.<br />
Ich schließe mich daher meinen Vorrednern, die Dir std::string empfehlen...</p>
</blockquote>
<p>Hey vorsichig Brauner, du willst wohl einen FlameWar anzetteln!<br />
Aber recht hast du, das ganze std:: Zeug macht den <s>Code</s> Kot hässlich.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2239586</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2239586</guid><dc:creator><![CDATA[heeeey!]]></dc:creator><pubDate>Tue, 07 Aug 2012 11:16:20 GMT</pubDate></item><item><title><![CDATA[Reply to Wie geht die Wertübergabe eines char name[] an die Main Funktion? on Tue, 07 Aug 2012 12:28:01 GMT]]></title><description><![CDATA[<p>FillColin schrieb:</p>
<blockquote>
<p>Herzlichen Dank an alle für die Antworten und die Hinweise, wie man es auf jedenfall nicht machen soll..</p>
<p>grüße</p>
</blockquote>
<p>hast du nicht bellis brauchbaren ansatz gesehen?<br />
das kann man noch ein bisschen universeller einsetzbar und sicherer machen, indem man snprintf benutzt:</p>
<pre><code class="language-cpp">string numbered_filename ( string name, string ext, unsigned number)
{    
	char number_buf[256]={0};
    snprintf( number_buf, sizeof(number_buf), &quot;%u&quot;, number );
    string ret(name+number_buf+&quot;.&quot;+ext);
    return ret;
} 

int main(void)
{ 
	string fname = &quot;path&quot;, ext = &quot;txt&quot;, result;
	result = numbered_filename(fname, ext, 88);
	cout &lt;&lt; result &lt;&lt; endl;
	return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2239610</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2239610</guid><dc:creator><![CDATA[b.b.]]></dc:creator><pubDate>Tue, 07 Aug 2012 12:28:01 GMT</pubDate></item><item><title><![CDATA[Reply to Wie geht die Wertübergabe eines char name[] an die Main Funktion? on Mon, 13 Aug 2012 12:13:02 GMT]]></title><description><![CDATA[<p>habe da nochmal eine Frage</p>
<p>Ich will nun die Dateien mit einem Zeitstempel versehen und habe volgendes gemacht</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &lt;string&gt;
#include &lt;ctime&gt;		// Dateinamengenerierung
#include &lt;iostream&gt;		// Dateinamengenerierung
//#include &lt;algorithm&gt;	// copy 
//#include &lt;iterator&gt;		// i(o)stream_iterator 
//#include &lt;string&gt;
//#include &lt;iostream&gt; 
//#include &lt;fstream&gt; 
//#include &lt;limits&gt;		// numeric_limits 
//#include &lt;time.h&gt;		// Für wait-Funktion

using namespace std;

string dateiname ();

int main (void)
{

	int a=0;

	time_t result = time(NULL);
	string ret_name = asctime(localtime(&amp;result));

	cout &lt;&lt; ret_name &lt;&lt; endl;

	for(a=0; a&lt;10; a++)
	{
		ret_name=dateiname ();
		cout &lt;&lt; ret_name &lt;&lt; endl;		
		getchar();		
	}			

		return 0;
}

string dateiname ()
{
	char name[80];

	time_t result = time(NULL);
	string date = asctime(localtime(&amp;result));

	cout &lt;&lt; date;

	sprintf( name, &quot;%s.txt&quot;, date); 
    string ret(name); 
    return ret; 
}
</code></pre>
<p>Bei Zeile 46 funktioniert irgendwas nicht und ich habe kein plan was da schiefgeht. Hätte gerne den erzeugten Zeitstempel als Dateiname.</p>
<p>KAnn mir da jm. ein tip geben?</p>
<p>danke u grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2241467</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2241467</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 13 Aug 2012 12:13:02 GMT</pubDate></item><item><title><![CDATA[Reply to Wie geht die Wertübergabe eines char name[] an die Main Funktion? on Mon, 13 Aug 2012 12:18:37 GMT]]></title><description><![CDATA[<p>warum das char Array? erstelle dir doch gleich einen string...</p>
<pre><code class="language-cpp">std::string name = date + &quot;.txt&quot;;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2241472</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2241472</guid><dc:creator><![CDATA[daddy_felix]]></dc:creator><pubDate>Mon, 13 Aug 2012 12:18:37 GMT</pubDate></item><item><title><![CDATA[Reply to Wie geht die Wertübergabe eines char name[] an die Main Funktion? on Mon, 13 Aug 2012 13:16:38 GMT]]></title><description><![CDATA[<p>gute Frage warum eigentlich ein array <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>
<pre><code class="language-cpp">string dateiname ()
{

	time_t result = time(NULL);
	string date = asctime(localtime(&amp;result));

	string name = date+&quot;.txt&quot;;

	return name; 
}
</code></pre>
<p>nun habe ich in der ausgabe noch nen zeilenumbruch drinne..ist das normal oder bekomme ich den irgendwie weg?</p>
<p>kein plan <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>_______<br />
weil weiter im programm wollte ich dann sowas in der art machen</p>
<pre><code class="language-cpp">ofstream f2(ret_name);
</code></pre>
<p>aber nun legt er kein neues txt an:(</p>
<p>hm....</p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;
#include &lt;string&gt;
#include &lt;ctime&gt;		// Dateinamengenerierung
#include &lt;iostream&gt;		// Dateinamengenerierung
#include &lt;algorithm&gt;	// copy 
#include &lt;iterator&gt;		// i(o)stream_iterator 
#include &lt;string&gt;
#include &lt;iostream&gt; 
#include &lt;fstream&gt; 
#include &lt;limits&gt;		// numeric_limits 
#include &lt;time.h&gt;		// Für wait-Funktion

using namespace std;
using namespace System;

string dateiname ();

int main (void)
{

	time_t result = time(NULL);
	string ret_name = asctime(localtime(&amp;result));

	cout &lt;&lt; ret_name &lt;&lt; endl;

		ret_name=dateiname ();
		cout &lt;&lt; ret_name &lt;&lt; endl;		

			ifstream f1(&quot;test.txt&quot;);					// vorhanden
			ofstream f2(ret_name);						// neuanlegen
//			copy();
			f1.close();									// Schließen
			f2.close();									// Schließen
			getchar();
	return 0;
}

string dateiname ()
{

	time_t result = time(NULL);
	string date = asctime(localtime(&amp;result));

	string name = date+&quot;.txt&quot;;

	return name; 
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2241473</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2241473</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Mon, 13 Aug 2012 13:16:38 GMT</pubDate></item></channel></rss>