<?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[strcpy&#x2F;strncpy verschiedener variablen liefert den selben Wert?]]></title><description><![CDATA[<p>Guten Tach auch, ich schon wieder!</p>
<p>und zwar liefert:</p>
<pre><code class="language-cpp">string eingabe;
    string str1, str2, str3, str4;
    string substr1;
    string substr2;
    string substr3;
    size_t pos1;
    size_t pos2;
    size_t pos3;
    size_t pos4;

std::ifstream fin(fileNameIn); // zum Lesen oeffnen
  for (int i = 0;i&lt;=GetCDTracks();i++)
    {
      if (!fin)
        {
          std::cout &lt;&lt; &quot;Die Datei konnte nicht geoeffnet werden!&quot; &lt;&lt; std::endl;
        }
      std::getline(fin,eingabe);
      std::cout &lt;&lt; eingabe;

      std::cout &lt;&lt; std::endl &lt;&lt; &quot;*******************************&quot; &lt;&lt; std::endl;
      fin.close();

      pos1 = eingabe.find(&quot;;&quot;);
      str1 = eingabe.substr (0,pos1);
      substr1 = eingabe.substr(pos1+1);

      pos2 = substr1.find(&quot;;&quot;);
      str2 = eingabe.substr(pos1+1,pos2);
      substr2 = substr1.substr(pos2+1);

      pos3 = substr2.find(&quot;;&quot;);
      str3 = eingabe.substr(pos2+1+pos1+1,pos3);
      substr3 = substr2.substr(pos3+1);

      pos4 = substr3.find(&quot;;&quot;);
      str4 = eingabe.substr(pos1+1+pos2+1+pos3+1,pos4);

    }

  std::cout &lt;&lt; &quot;**********************************************&quot; &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;EingabeOrg: &quot; &lt;&lt; eingabe &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;substring1: &quot; &lt;&lt; substr1 &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;Substring2: &quot; &lt;&lt; substr2 &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;Substring3: &quot; &lt;&lt; substr3 &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;**********************************************&quot; &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;String1: &quot; &lt;&lt; str1 &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;String2: &quot; &lt;&lt; str2 &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;String3: &quot; &lt;&lt; str3 &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;String4: &quot; &lt;&lt; str4 &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;**********************************************&quot; &lt;&lt; std::endl;

/************************************************************************************/
  strncpy(Interpret,str1.c_str(),80);
  strncpy(Titel,str2.c_str(),80);

/************************************************************************************/
  std::stringstream hilfsTracks;
  std::stringstream hilfsTime;

  hilfsTime &lt;&lt; str4;
  hilfsTime &gt;&gt; Time;
  hilfsTracks &lt;&lt; str3;
  hilfsTracks &gt;&gt; Tracks;

  SetCDData(Interpret,Titel,Time,Tracks);

}
</code></pre>
<p>folgendes:</p>
<pre><code>============================================
CD-Infos:
============================================
   Interpret: Arctic Monkeys
   Titel    : Arctic Monkeys
   Tracks   : 3
   Spielzeit: 123
============================================
</code></pre>
<p>funktion zur ausgabe:</p>
<pre><code class="language-cpp">void classCD::ShowCDData()
{
  std::cout                                                   &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;============================================&quot; &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;CD-Infos: &quot;                                   &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;============================================&quot; &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;   Interpret: &quot; &lt;&lt; GetCDInterpret()           &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;   Titel    : &quot; &lt;&lt; GetCDTitel()               &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;   Tracks   : &quot; &lt;&lt; GetCDTracks()              &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;   Spielzeit: &quot; &lt;&lt; GetCDTime()                &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;============================================&quot; &lt;&lt; std::endl;
  std::cout                                                   &lt;&lt; std::endl;
}
</code></pre>
<p>jemand ne ahnung warum das passiert, dass nach dem strcpy und auch strncpy, str1 und str2 jeweils den selben wert haben?</p>
<p>Danke schonmal...</p>
<p>(dass der code nicht optimal ist weiß ich, leider <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="😉"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/173263/strcpy-strncpy-verschiedener-variablen-liefert-den-selben-wert</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 07:43:31 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/173263.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 13 Feb 2007 13:49:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to strcpy&#x2F;strncpy verschiedener variablen liefert den selben Wert? on Tue, 13 Feb 2007 14:16:35 GMT]]></title><description><![CDATA[<p>Guten Tach auch, ich schon wieder!</p>
<p>und zwar liefert:</p>
<pre><code class="language-cpp">string eingabe;
    string str1, str2, str3, str4;
    string substr1;
    string substr2;
    string substr3;
    size_t pos1;
    size_t pos2;
    size_t pos3;
    size_t pos4;

std::ifstream fin(fileNameIn); // zum Lesen oeffnen
  for (int i = 0;i&lt;=GetCDTracks();i++)
    {
      if (!fin)
        {
          std::cout &lt;&lt; &quot;Die Datei konnte nicht geoeffnet werden!&quot; &lt;&lt; std::endl;
        }
      std::getline(fin,eingabe);
      std::cout &lt;&lt; eingabe;

      std::cout &lt;&lt; std::endl &lt;&lt; &quot;*******************************&quot; &lt;&lt; std::endl;
      fin.close();

      pos1 = eingabe.find(&quot;;&quot;);
      str1 = eingabe.substr (0,pos1);
      substr1 = eingabe.substr(pos1+1);

      pos2 = substr1.find(&quot;;&quot;);
      str2 = eingabe.substr(pos1+1,pos2);
      substr2 = substr1.substr(pos2+1);

      pos3 = substr2.find(&quot;;&quot;);
      str3 = eingabe.substr(pos2+1+pos1+1,pos3);
      substr3 = substr2.substr(pos3+1);

      pos4 = substr3.find(&quot;;&quot;);
      str4 = eingabe.substr(pos1+1+pos2+1+pos3+1,pos4);

    }

  std::cout &lt;&lt; &quot;**********************************************&quot; &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;EingabeOrg: &quot; &lt;&lt; eingabe &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;substring1: &quot; &lt;&lt; substr1 &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;Substring2: &quot; &lt;&lt; substr2 &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;Substring3: &quot; &lt;&lt; substr3 &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;**********************************************&quot; &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;String1: &quot; &lt;&lt; str1 &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;String2: &quot; &lt;&lt; str2 &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;String3: &quot; &lt;&lt; str3 &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;String4: &quot; &lt;&lt; str4 &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;**********************************************&quot; &lt;&lt; std::endl;

/************************************************************************************/
  strncpy(Interpret,str1.c_str(),80);
  strncpy(Titel,str2.c_str(),80);

/************************************************************************************/
  std::stringstream hilfsTracks;
  std::stringstream hilfsTime;

  hilfsTime &lt;&lt; str4;
  hilfsTime &gt;&gt; Time;
  hilfsTracks &lt;&lt; str3;
  hilfsTracks &gt;&gt; Tracks;

  SetCDData(Interpret,Titel,Time,Tracks);

}
</code></pre>
<p>folgendes:</p>
<pre><code>============================================
CD-Infos:
============================================
   Interpret: Arctic Monkeys
   Titel    : Arctic Monkeys
   Tracks   : 3
   Spielzeit: 123
============================================
</code></pre>
<p>funktion zur ausgabe:</p>
<pre><code class="language-cpp">void classCD::ShowCDData()
{
  std::cout                                                   &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;============================================&quot; &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;CD-Infos: &quot;                                   &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;============================================&quot; &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;   Interpret: &quot; &lt;&lt; GetCDInterpret()           &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;   Titel    : &quot; &lt;&lt; GetCDTitel()               &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;   Tracks   : &quot; &lt;&lt; GetCDTracks()              &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;   Spielzeit: &quot; &lt;&lt; GetCDTime()                &lt;&lt; std::endl;
  std::cout &lt;&lt; &quot;============================================&quot; &lt;&lt; std::endl;
  std::cout                                                   &lt;&lt; std::endl;
}
</code></pre>
<p>jemand ne ahnung warum das passiert, dass nach dem strcpy und auch strncpy, str1 und str2 jeweils den selben wert haben?</p>
<p>Danke schonmal...</p>
<p>(dass der code nicht optimal ist weiß ich, leider <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="😉"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1228134</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228134</guid><dc:creator><![CDATA[Maguuu]]></dc:creator><pubDate>Tue, 13 Feb 2007 14:16:35 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy&#x2F;strncpy verschiedener variablen liefert den selben Wert? on Tue, 13 Feb 2007 16:20:46 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">pos1 = eingabe.find(&quot;;&quot;);
      str1 = eingabe.substr (0,pos1);
      substr1 = eingabe.substr(pos1+1);

      pos2 = substr1.find(&quot;;&quot;);
      str2 = eingabe.substr(pos1+1,pos2);
      substr2 = substr1.substr(pos2+1);

      pos3 = substr2.find(&quot;;&quot;);
      str3 = eingabe.substr(pos2+1+pos1+1,pos3);
      substr3 = substr2.substr(pos3+1);

      pos4 = substr3.find(&quot;;&quot;);
      str4 = eingabe.substr(pos1+1+pos2+1+pos3+1,pos4);
</code></pre>
<p>Die Logik hier ist falsch. ZB ist <em>pos1</em> relativ zu <em>eingabe</em>, <em>pos2</em> jedoch relativ zu <em>substr1</em>. Wenn du <em>eingabe.substr(pos1+1,pos2)</em> aufrufst, kann da kein vernünftiges Ergebnis rauskommen. Ich würde es eher wie folgt machen:</p>
<pre><code class="language-cpp">pos1 = eingabe.find(&quot;;&quot;);
      str1 = eingabe.substr (0,pos1);
      substr1 = eingabe.substr(pos1+1);

      pos2 = substr1.find(&quot;;&quot;);
      str2 = substr1.substr(0,pos2);
      substr2 = substr1.substr(pos2+1);

      pos3 = substr2.find(&quot;;&quot;);
      str3 = substr2.substr(0,pos3);
      substr3 = substr2.substr(pos3+1);

      pos4 = substr3.find(&quot;;&quot;);
      str4 = substr3.substr(0,pos4);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1228262</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228262</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Tue, 13 Feb 2007 16:20:46 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy&#x2F;strncpy verschiedener variablen liefert den selben Wert? on Wed, 14 Feb 2007 07:27:09 GMT]]></title><description><![CDATA[<p>Oder die ganzen substr's weglassen (du kannst der Methode substr() als zweiten Parameter auch die Länge des zu kopierenden Teilstrings mitgeben).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1228489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228489</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 14 Feb 2007 07:27:09 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy&#x2F;strncpy verschiedener variablen liefert den selben Wert? on Wed, 14 Feb 2007 07:52:39 GMT]]></title><description><![CDATA[<p>Guten Morgen Ihrse!</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/2813">@groovemaster</a>: bringt leider keinerlei Änderung...<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a>: Die Länge des Strings ändert sich immer wieder, deswegen brauch ich die Suche nach den Semikolons...</p>
<p>Es wundert mich einfach nur, dass in der Ausgabe davor die Werte stimmen, aber nach der Zuweisung nicht mehr. Erinnert mich irgendwie an &quot;fflush(stdin);&quot; da konnte sowas ja auch vermieden werden, zumindest bei STDIN's...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1228503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228503</guid><dc:creator><![CDATA[Maguuu]]></dc:creator><pubDate>Wed, 14 Feb 2007 07:52:39 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy&#x2F;strncpy verschiedener variablen liefert den selben Wert? on Wed, 14 Feb 2007 07:56:33 GMT]]></title><description><![CDATA[<p>Maguuu schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/10318">@CStoll</a>: Die Länge des Strings ändert sich immer wieder, deswegen brauch ich die Suche nach den Semikolons...</p>
</blockquote>
<p>Wie gesagt: substr() hat zwei Parameter:</p>
<pre><code class="language-cpp">pos1 = eingabe.find(&quot;;&quot;);
str1 = eingabe.substr (0,pos1);

pos2 = eingabe.find(&quot;;&quot;,pos1+1);//Suche hinter pos1 fortsetzen
str2 = eingabe.substr(pos1+1,pos2-pos1);

...
</code></pre>
<p>Ansonsten: Wo (und wie) sind eigentlich die Variablen 'Interpret' und 'Titel' definiert? Und warum verwendest du dafür überhaupt char-Arrays?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1228506</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228506</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 14 Feb 2007 07:56:33 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy&#x2F;strncpy verschiedener variablen liefert den selben Wert? on Wed, 14 Feb 2007 07:56:39 GMT]]></title><description><![CDATA[<p>Was genau sind denn die Variablen Interpret und Titel? Zeigen die womöglich auf denselben Speicherbereich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1228507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228507</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 14 Feb 2007 07:56:39 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy&#x2F;strncpy verschiedener variablen liefert den selben Wert? on Wed, 14 Feb 2007 08:00:43 GMT]]></title><description><![CDATA[<p>Das ganze ist ein Programm mit dem ich angefangen habe C++ zu lernen und am Anfang hab ich noch nicht mit der String-Klasse gearbeitet.<br />
Wäre es in dem Fall sinnvoll von vornherein die Variablen als String zu definieren oder weiter nach einer Lösung zu suchen...?!<br />
Steh gerade echt auf dem Schlauch</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1228509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228509</guid><dc:creator><![CDATA[Maguuu]]></dc:creator><pubDate>Wed, 14 Feb 2007 08:00:43 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy&#x2F;strncpy verschiedener variablen liefert den selben Wert? on Wed, 14 Feb 2007 08:08:04 GMT]]></title><description><![CDATA[<p>Auf jeden Fall (und eigentlich sind die Variablen sowieso überflüssig - du kannst str1 und str2 auch direkt als Parameter weitergeben).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1228515</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228515</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 14 Feb 2007 08:08:04 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy&#x2F;strncpy verschiedener variablen liefert den selben Wert? on Wed, 14 Feb 2007 08:15:30 GMT]]></title><description><![CDATA[<p>Das ganze ist glaub ich, in meinem Fall, nicht so einfach, der Quelltext ist wirklich nur ein Auszug, die komplette Geschichte besteht mittlerweile aus 7 files.<br />
Titel, Interpret, Tracks, Time sind bereits definiert und haben auch entsprechende Get- und Set-Funktionen.</p>
<p>wenn ich die strings als parameter übergebe geschieht folgendes...ich versteh ja auch warum, aus diesem grund wollte ich ja die konvertierung...narf...ich werd zum sabbernden lappen hier <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="😉"
    /></p>
<blockquote>
<p>:: === CDVerwaltung, Debug ===<br />
E:\Entwicklung\AS-Entwicklung\Softwareentwicklung\Projekte\CDVerwaltung\classCD.cpp:198: error: no matching function for call to `classCD::SetCDData(std::string&amp;, std::string&amp;, std::string&amp;, std::string&amp;)'<br />
E:\Entwicklung\AS-Entwicklung\Softwareentwicklung\Projekte\CDVerwaltung\classCD.cpp:103: note: candidates are: void classCD::SetCDData(const char*, const char*, short int, short int)<br />
E:\Entwicklung\AS-Entwicklung\Softwareentwicklung\Projekte\CDVerwaltung\classCD.cpp:96: note: void classCD::SetCDData()<br />
:: === Build finished: 3 errors, 0 warnings ===</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1228518</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228518</guid><dc:creator><![CDATA[Maguuu]]></dc:creator><pubDate>Wed, 14 Feb 2007 08:15:30 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy&#x2F;strncpy verschiedener variablen liefert den selben Wert? on Wed, 14 Feb 2007 08:20:31 GMT]]></title><description><![CDATA[<p>Time und Tracks waren schon in Ordnung. Ändere einfach SetCDData so um, dass die ersten beiden Parameter den Typ const std::string&amp; haben</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1228522</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228522</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Wed, 14 Feb 2007 08:20:31 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy&#x2F;strncpy verschiedener variablen liefert den selben Wert? on Wed, 14 Feb 2007 08:20:51 GMT]]></title><description><![CDATA[<p>Optimale Lösung: Stell dein gesamtes Projekt von char* auf std::string um (das kann ein wenig dauern, aber es lohnt sich).</p>
<p>Schnelle Lösung: <code>SetCDData(str1.c_str(),str2.c_str(),Time,Tracks);</code> (die Methode c_str() liefert die String-Daten als const char* - also genau in dem Format, das deine Funktion erwartet)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1228524</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228524</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 14 Feb 2007 08:20:51 GMT</pubDate></item><item><title><![CDATA[Reply to strcpy&#x2F;strncpy verschiedener variablen liefert den selben Wert? on Wed, 14 Feb 2007 09:17:36 GMT]]></title><description><![CDATA[<p>danke erstmal, ich versuch das jetzt auf jeden fall, mal sehen wo ich das überall noch ändern muss...ich werde berichten <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="😉"
    /></p>
<p>aber wiedermals danke für die schnelle, kompetente hilfe!</p>
<p>yes! str1.c_str() etc... geht!<br />
fürs erste passt das schonmal, falls ich heute noch dazu komme werd ich aber alles auf string umschreiben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1228526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1228526</guid><dc:creator><![CDATA[Maguuu]]></dc:creator><pubDate>Wed, 14 Feb 2007 09:17:36 GMT</pubDate></item></channel></rss>