<?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[Benutzung von sprintf()]]></title><description><![CDATA[<p>Hi,</p>
<p>mein Programm soll alle Daten (hier: Plural von Datum) vom 01.01.1980 bis 30.12.2010 in Char-Array umwandeln und als String ausgeben.</p>
<p>Der Einfachheit halber haben hier alle Monate genau 30 Tage.</p>
<pre><code class="language-cpp">char year_str[4], month_str[2], day_str[2];
int year,month,day;

for (year=1980; year&lt;=2010; year++) {
  sprintf(year_str, &quot;%i&quot;, year);

  for (month=1; month&lt;=12; month++) {
    if (month &lt; 10)
      sprintf(month_str, &quot;0%i&quot;, month);
    else
      sprintf(month_str, &quot;%i&quot;, month);	  

    for (day=1; day&lt;=30; day++) {
	if (day &lt; 10)
	  sprintf(day_str, &quot;0%i&quot;, day);
	else
	  sprintf(day_str, &quot;%i&quot;, day);

	printf(&quot;%s.%s.%s\n&quot;, day_str, month_str, year_str);
    }
  }
}
</code></pre>
<p>Der Tag (Variable day_str) wird korrekt ausgegeben. Für Jahr und Monat wird leider nichts ausgegeben. Kann mir jemand sagen, warum das so ist?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/268544/benutzung-von-sprintf</link><generator>RSS for Node</generator><lastBuildDate>Tue, 01 Sep 2026 17:53:13 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/268544.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 10 Jun 2010 16:20:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Benutzung von sprintf() on Thu, 10 Jun 2010 16:20:35 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>mein Programm soll alle Daten (hier: Plural von Datum) vom 01.01.1980 bis 30.12.2010 in Char-Array umwandeln und als String ausgeben.</p>
<p>Der Einfachheit halber haben hier alle Monate genau 30 Tage.</p>
<pre><code class="language-cpp">char year_str[4], month_str[2], day_str[2];
int year,month,day;

for (year=1980; year&lt;=2010; year++) {
  sprintf(year_str, &quot;%i&quot;, year);

  for (month=1; month&lt;=12; month++) {
    if (month &lt; 10)
      sprintf(month_str, &quot;0%i&quot;, month);
    else
      sprintf(month_str, &quot;%i&quot;, month);	  

    for (day=1; day&lt;=30; day++) {
	if (day &lt; 10)
	  sprintf(day_str, &quot;0%i&quot;, day);
	else
	  sprintf(day_str, &quot;%i&quot;, day);

	printf(&quot;%s.%s.%s\n&quot;, day_str, month_str, year_str);
    }
  }
}
</code></pre>
<p>Der Tag (Variable day_str) wird korrekt ausgegeben. Für Jahr und Monat wird leider nichts ausgegeben. Kann mir jemand sagen, warum das so ist?</p>
<p>Danke!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1910167</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1910167</guid><dc:creator><![CDATA[matthias123]]></dc:creator><pubDate>Thu, 10 Jun 2010 16:20:35 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzung von sprintf() on Thu, 10 Jun 2010 16:36:53 GMT]]></title><description><![CDATA[<p>Deine char-Arrays sind zu kurz. Wenn du mit C-Strings arbeiten möchtest, musst du immer ein zusätzliches Zeichen vorsehen, weil per Konvention ein Nullzeichen das Ende eines C-Strings markiert.</p>
<p>Aufgrund deines Codes bin ich mir nicht sicher, ob du nicht C machen willst, obwohl du hier im C++ Unterforum gefragt hast. Falls du C++ machen willst, gibt es da wesentlich bessere Methoden um Zahlen und Strings ineinander umzuwandeln. Falls du doch C machen möchtest, bist du hier schon auf den richtigen Weg.</p>
<p>Falls das ganze einen konkreten Anwendungszweck haben soll und nicht rein zu deiner eigenen Übung dienen soll: Zur Umrechnung von Datums- und Zeitformaten gibt es schon eine Menge Funktionalität in der Standardbibliothek (Header time.h in C bzw. ctime in C++).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1910179</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1910179</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 10 Jun 2010 16:36:53 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzung von sprintf() on Thu, 10 Jun 2010 21:10:59 GMT]]></title><description><![CDATA[<p>Vielen Dank! Es funktioniert jetzt.</p>
<p>Es ist eigentlich egal ob ich das in C oder C++ mache. Es muss einfach nur funktionieren. Ich dachte mir, dass ich schneller bin, wenn ich es in C einfach selber schreibe, da ich von der STL und den zur Verfügung stehenden Funktionen noch keine Ahnung habe. Wenn es aber damit einfacher ist, die Schaltjahre (#Tage im Februar) zu berücksichtigen, dann wäre es wahrscheinlich sinnvoll mir das mal genauer anzuschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1910348</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1910348</guid><dc:creator><![CDATA[matthias123]]></dc:creator><pubDate>Thu, 10 Jun 2010 21:10:59 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzung von sprintf() on Thu, 10 Jun 2010 22:41:24 GMT]]></title><description><![CDATA[<p>matthias123 schrieb:</p>
<blockquote>
<p>Vielen Dank! Es funktioniert jetzt.</p>
<p>Es ist eigentlich egal ob ich das in C oder C++ mache. Es muss einfach nur funktionieren. Ich dachte mir, dass ich schneller bin, wenn ich es in C einfach selber schreibe, da ich von der STL und den zur Verfügung stehenden Funktionen noch keine Ahnung habe. Wenn es aber damit einfacher ist, die Schaltjahre (#Tage im Februar) zu berücksichtigen, dann wäre es wahrscheinlich sinnvoll mir das mal genauer anzuschauen.</p>
</blockquote>
<p>Eine kurze Demo, was so alles möglich ist:</p>
<pre><code class="language-cpp">#include &lt;stdio.h&gt;
#include &lt;time.h&gt;
#include &lt;locale.h&gt;

int main ()
{
  const time_t start=315532801;     /* 1.1.1980 00:01 */
  const time_t end=1293753601;      /* 31.12.2010 00:01 */
  time_t counter;
  struct tm * timeinfo;
  char buffer [100];

  setlocale(LC_TIME,&quot;de_DE.utf8&quot;);  /* Passendes einsetzen */

  for (counter = start; counter&lt;=end; counter += 60*60*24)
    {
      timeinfo = localtime ( &amp;counter );
      strftime (buffer,100,&quot;Es ist %A, der %d. %B %Y. Dies ist die %W. Kalenderwoche.&quot;,timeinfo);
      puts (buffer);
    }

  return 0;
}
</code></pre>
<p>Ich war dabei so frei dein Programm am 31.12 anstatt am 30.12 enden zu lassen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1910372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1910372</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 10 Jun 2010 22:41:24 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzung von sprintf() on Fri, 11 Jun 2010 12:45:22 GMT]]></title><description><![CDATA[<p>Danke!! Das geht ja wirklich elegant <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>Ich frage mich hier gerade nur, wie du auf den Wert von start gekommen bist.</p>
<pre><code class="language-cpp">const time_t start=315532801;     /* 1.1.1980 00:01 */
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1910687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1910687</guid><dc:creator><![CDATA[matthias123]]></dc:creator><pubDate>Fri, 11 Jun 2010 12:45:22 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzung von sprintf() on Fri, 11 Jun 2010 12:59:59 GMT]]></title><description><![CDATA[<p>matthias123 schrieb:</p>
<blockquote>
<p>Danke!! Das geht ja wirklich elegant <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>Ich frage mich hier gerade nur, wie du auf den Wert von start gekommen bist.</p>
<pre><code class="language-cpp">const time_t start=315532801;     /* 1.1.1980 00:01 */
</code></pre>
</blockquote>
<p>Ehrlich gesagt, habe ich es nachgeschlagen <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="😉"
    /> . Leider ist nicht standardisiert, dass dies wirklich besagtes Datum ist, aber nur auf äußert exotischen Maschinen ist das nicht der Fall:<br />
<a href="http://www.onlineconversion.com/unix_time.htm" rel="nofollow">http://www.onlineconversion.com/unix_time.htm</a></p>
<p>Falls jemand eine bessere Methode kennt, bin ich auch brennend daran interessiert. In der time.h sind nur Methoden um das aktuelle Datum rauszufinden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1910699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1910699</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 11 Jun 2010 12:59:59 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzung von sprintf() on Fri, 11 Jun 2010 13:22:58 GMT]]></title><description><![CDATA[<p>Was ist mit mktime?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1910728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1910728</guid><dc:creator><![CDATA[seldon]]></dc:creator><pubDate>Fri, 11 Jun 2010 13:22:58 GMT</pubDate></item><item><title><![CDATA[Reply to Benutzung von sprintf() on Fri, 11 Jun 2010 14:11:39 GMT]]></title><description><![CDATA[<p>seldon schrieb:</p>
<blockquote>
<p>Was ist mit mktime?</p>
</blockquote>
<p>Ich bin so blind! Ja, genau das ist die Lösung.</p>
<p>Ich hatte die Funktionen nur den Parametern nach angeguckt und hatte etwas gesucht, das char* in time_t umwandelt. Da habe ich diese Funktion glatt übersehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1910761</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1910761</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Fri, 11 Jun 2010 14:11:39 GMT</pubDate></item></channel></rss>