<?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[Array aus Strings]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich muss 20 Strings einlesen und die dann lexikographisch sortiert ausgeben. Mein eigentliches Problem ist das Speichern der Strings. Wir sollen printf und scanf benutzen. Zum testen habe ich ein mehrdimensionales Array erstellt, der zwei Arrays mit je 10 Zellen hat, also array[2][10].</p>
<pre><code class="language-cpp">#include &lt;cstdio&gt;

int main(){
	char eingabe[2][10];

	printf(&quot;\nBitte geben Sie ein Wort ein: &quot;);
	scanf(&quot;%s&quot;,(eingabe+0));
	printf(&quot;\nSie haben %s eingegeben.&quot;,eingabe);

	printf(&quot;\nBitte geben Sie ein Wort ein: &quot;);
	scanf(&quot;%s&quot;,(eingabe+1));
	printf(&quot;\nSie haben %s und %s eingegeben.&quot;,eingabe,(eingabe+1));
	return 0;
}
</code></pre>
<p>Das Problem ist, dass ich folgende Ausgabe bekomme:</p>
<pre><code>g++ zeicheneinlesen.cpp
zeicheneinlesen.cpp: In function »int main()«:
zeicheneinlesen.cpp:7: Warnung: format »%s« erwartet Typ »char*«, aber Argument 2 hat Typ »char (*)[10]«
zeicheneinlesen.cpp:8: Warnung: format »%s« erwartet Typ »char*«, aber Argument 2 hat Typ »char (*)[10]«
zeicheneinlesen.cpp:11: Warnung: format »%s« erwartet Typ »char*«, aber Argument 2 hat Typ »char (*)[10]«
zeicheneinlesen.cpp:12: Warnung: format »%s« erwartet Typ »char*«, aber Argument 2 hat Typ »char (*)[10]«
zeicheneinlesen.cpp:12: Warnung: format »%s« erwartet Typ »char*«, aber Argument 3 hat Typ »char (*)[10]«
</code></pre>
<p>Ich verstehe meinen Fehler nicht (das liegt auch daran, dass ich mit Zeigern noch nicht so gut umgehen kann und deshalb bei jedem Zeiger-Fehler in Büchern nochmal nachschlagen muss <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> )</p>
<p>Ich bringe das Programm zum Laufen und es funzt, aber die Warnings will ich schon weghaben.</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/251578/array-aus-strings</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 10:12:32 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/251578.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 07 Oct 2009 10:32:35 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Array aus Strings on Wed, 07 Oct 2009 10:32:35 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich muss 20 Strings einlesen und die dann lexikographisch sortiert ausgeben. Mein eigentliches Problem ist das Speichern der Strings. Wir sollen printf und scanf benutzen. Zum testen habe ich ein mehrdimensionales Array erstellt, der zwei Arrays mit je 10 Zellen hat, also array[2][10].</p>
<pre><code class="language-cpp">#include &lt;cstdio&gt;

int main(){
	char eingabe[2][10];

	printf(&quot;\nBitte geben Sie ein Wort ein: &quot;);
	scanf(&quot;%s&quot;,(eingabe+0));
	printf(&quot;\nSie haben %s eingegeben.&quot;,eingabe);

	printf(&quot;\nBitte geben Sie ein Wort ein: &quot;);
	scanf(&quot;%s&quot;,(eingabe+1));
	printf(&quot;\nSie haben %s und %s eingegeben.&quot;,eingabe,(eingabe+1));
	return 0;
}
</code></pre>
<p>Das Problem ist, dass ich folgende Ausgabe bekomme:</p>
<pre><code>g++ zeicheneinlesen.cpp
zeicheneinlesen.cpp: In function »int main()«:
zeicheneinlesen.cpp:7: Warnung: format »%s« erwartet Typ »char*«, aber Argument 2 hat Typ »char (*)[10]«
zeicheneinlesen.cpp:8: Warnung: format »%s« erwartet Typ »char*«, aber Argument 2 hat Typ »char (*)[10]«
zeicheneinlesen.cpp:11: Warnung: format »%s« erwartet Typ »char*«, aber Argument 2 hat Typ »char (*)[10]«
zeicheneinlesen.cpp:12: Warnung: format »%s« erwartet Typ »char*«, aber Argument 2 hat Typ »char (*)[10]«
zeicheneinlesen.cpp:12: Warnung: format »%s« erwartet Typ »char*«, aber Argument 3 hat Typ »char (*)[10]«
</code></pre>
<p>Ich verstehe meinen Fehler nicht (das liegt auch daran, dass ich mit Zeigern noch nicht so gut umgehen kann und deshalb bei jedem Zeiger-Fehler in Büchern nochmal nachschlagen muss <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f60b.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_savoring_food"
      title=":yum:"
      alt="😋"
    /> )</p>
<p>Ich bringe das Programm zum Laufen und es funzt, aber die Warnings will ich schon weghaben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789128</guid><dc:creator><![CDATA[lil_pingu]]></dc:creator><pubDate>Wed, 07 Oct 2009 10:32:35 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Strings on Wed, 07 Oct 2009 12:42:06 GMT]]></title><description><![CDATA[<p>Erstmal eine Gegenfrage:<br />
Willst Du idiomatisches C++ programmieren oder C in C++?</p>
<p>Zu den Warnungen:<br />
eingabe ist vom Typ char[2][10].<br />
eingabe+0 ist ein &quot;Rvalue&quot; vom Typ char(<em>)[10] und zeigt auf das erste char[10]<br />
eingabe+1 ist ein &quot;Rvalue&quot; vom Typ char(</em>)[10] und seigt auf das zweite char[10]<br />
eingabe[0] ist ein &quot;Lvalue&quot; vom Typ char[10], bezieht sich auf das erste char[10].<br />
eingabe[1] ist ein &quot;Lvalue&quot; vom Typ char[10], bezieht sich auf das zweite char[10].<br />
Das Stichwort, nach dem Du suchen könntest, ist &quot;array to pointer decay&quot;. Ein Lvalue-Ausdruck eines Array-Typs kann zu einem Zeiger auf das erste Element &quot;zerfallen&quot; (decay).</p>
<p><div class="plugin-markdown"><input type="checkbox" id="checkbox234375" checked="true" /><label for="checkbox234375">zu schreiben. eingabe[x] ist ein Ausdruck, der sich auf eines der char[10]-Arrays bezieht. Der Funktion wird dann einfach ein Zeiger auf das erste Element dieses Arrays gegeben. Der Zeiger ist dann vom Typ char*.</label></div></p>
<p>In &quot;idiomatischem C++&quot; würdest Du std::string, std::cin und vielleicht auch std::vector benutzen. ZB so:</p>
<pre><code class="language-cpp">vector&lt;string&gt; eingabe;
while (...) {
  string dings;
  cin &gt;&gt; dings;
  eingabe.push_back(dings);
}
</code></pre>
<p>Gruß,<br />
SP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789155</guid><dc:creator><![CDATA[Sebastian Pizer]]></dc:creator><pubDate>Wed, 07 Oct 2009 12:42:06 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Strings on Wed, 07 Oct 2009 11:35:38 GMT]]></title><description><![CDATA[<p>Also ich hab C++ so gelernt, wie C++ eigentlich ist, also mit namespaces, cin/cout usw. Aber in der Uni haben wir einen Blockkurs C++, wo der Prof ein C-Freak ist und deshalb viel mehr die C-Bibliotheken und C-Eigenschaften benutzt. Ich hab ihn auch gefragt, ob ich nicht die Klasse String und cin/cout benutzen darf und er meinte, cih soll die Funktionen ersteinmal so verwenden, wie es verlangt wird (und auf dem Übungsblatt steht scanf und printf)...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789176</guid><dc:creator><![CDATA[lil_pingu]]></dc:creator><pubDate>Wed, 07 Oct 2009 11:35:38 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Strings on Wed, 07 Oct 2009 12:24:08 GMT]]></title><description><![CDATA[<p>lil_pingu schrieb:</p>
<blockquote>
<p>Also ich hab C++ so gelernt, wie C++ eigentlich ist, also mit namespaces, cin/cout usw. Aber in der Uni haben wir einen Blockkurs C++, wo der Prof ein C-Freak ist und deshalb viel mehr die C-Bibliotheken und C-Eigenschaften benutzt. Ich hab ihn auch gefragt, ob ich nicht die Klasse String und cin/cout benutzen darf und er meinte, cih soll die Funktionen ersteinmal so verwenden, wie es verlangt wird (und auf dem Übungsblatt steht scanf und printf)...</p>
</blockquote>
<p>also hast du sicherlich zu den &quot;20 Strings&quot; auch ne maximallänge bekommen?<br />
ansonsten wirds mit C vermutlich ein wenig schwer^^</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

enum
{
 string_count = 20,
 string_length = 256
};

int main()
{
  char strings[string_count][string_length];

  scanf(&quot;%s&quot;, strings[0]);

  printf(&quot;eingabe war: %s\r\n&quot;, strings[0]);
}
</code></pre>
<p>so in etwa...</p>
<p>den rest bekommst du selbst hin, oder!?</p>
<p>bb</p>
<p>PS: Wenn du C aufgaben hast, dann poste doch dem nächst im C forum - wird dir vrmtl auch schneller und kompetenter geholfen als hier - in C++ geht das nun mal ein wenig anders^^</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789196</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789196</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 07 Oct 2009 12:24:08 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Strings on Wed, 07 Oct 2009 12:45:16 GMT]]></title><description><![CDATA[<p>Wie gesagt: Es sind C++-Aufgabe, nicht C. Denn der Kurs heißt auch C++-Kurs. Der Prof ist halt ein C-Nerd und verlangt am anfang anderes zeugs. Habs auch hinbekommen und die Maximallänge ist auch vorgegeben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789209</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789209</guid><dc:creator><![CDATA[lil_pingu]]></dc:creator><pubDate>Wed, 07 Oct 2009 12:45:16 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Strings on Wed, 07 Oct 2009 13:19:43 GMT]]></title><description><![CDATA[<p>lil_pingu schrieb:</p>
<blockquote>
<p>Wie gesagt: Es sind C++-Aufgabe, nicht C. Denn der Kurs heißt auch C++-Kurs. Der Prof ist halt ein C-Nerd und verlangt am anfang anderes zeugs. Habs auch hinbekommen und die Maximallänge ist auch vorgegeben.</p>
</blockquote>
<p>ja - schön, wenns C++ aufgaben sind - aber dummerweise hat bei so was ja der prof auch immer nen wort mitzureden... ich hatte letztes semester auch einen, der wollte, dass wir komplett ohne alles arbeiten(nicht mal die cstddef durften wir verwenden) - und hat das trotzdem C++ genannt obwohls nur noch C mit new/delete und referenzen war - und (meta-)template-programmierung <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=";D"
      alt="😉"
    /> der arme hat bestimmt kein wort verstanden, weil er eben auch nur C konnte...<br />
aber wenn du dann halt weist, dass er die C-lösung möchte, ist das C forum vll besser als das C++ forum <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=";D"
      alt="😉"
    /></p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789229</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Wed, 07 Oct 2009 13:19:43 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Strings on Wed, 07 Oct 2009 19:18:02 GMT]]></title><description><![CDATA[<p>Du hast im Grunde recht. Es hat mich auch aufgeregt, als ich in der ersten Stunde da saß und Hello-World im C-Stil sah. Und ich hab mich auch darüber aufgeregt, dass er nicht einmal Sachen aus der STL nimmt...ich hatte anfangs auch die Idee mit der vector-class, aber er hat ausdrücklich in der Aufgabe gesagt, dass wir es mit char-Arrays machen sollen...Diese Erfahrung habe ich auch mit C++-Büchern gemacht...Hatte eins, wo der Autor eher ein C-Freak war und deshalb alles so C-beladen war. Namespaces und so weiter werden kaum erwähnt, was meiner Meinung nach eine Schande ist und auch gefährlich, wenn man die C++Reference benutzt und die ganzen &lt;&lt;,&gt;&gt;, cin s usw nicht versteht...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789385</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789385</guid><dc:creator><![CDATA[lil_pingu]]></dc:creator><pubDate>Wed, 07 Oct 2009 19:18:02 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Strings on Wed, 07 Oct 2009 20:10:46 GMT]]></title><description><![CDATA[<p>Besonders schlimm ist das vor allem für die Leute, die sich nicht zusätzlich informieren und solches Gefrickel für tatsächliches C++ halten. Bei dir mach ich mir weniger Sorgen, da du dir ja der Problematik bewusst bist. Aber andere Leute können sich bei solchem Unterricht leicht Dinge angewöhnen, welche ihnen später dauernd Schwierigkeiten bereiten - und das nur, weil sie keine sauberen Alternativen kennengelernt haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789400</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789400</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 07 Oct 2009 20:10:46 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Strings on Thu, 08 Oct 2009 07:03:48 GMT]]></title><description><![CDATA[<p>lil_pingu schrieb:</p>
<blockquote>
<p>...der Autor eher ein C-Freak war ...</p>
</blockquote>
<p>Ich neige dazu, solche Leute nicht auch noch mit Euphemismen (&quot;C-Freak&quot;, &quot;C-Nerd&quot;, ...) zu titulieren.<br />
Passender wäre:<br />
- &quot;lernresistent&quot;,<br />
- &quot;nicht mit den eigenen Wissensgrenzen vertraut&quot;<br />
- und bisweilen auch schlicht &quot;faul&quot; (seine Übungsaufgaben dem Lernstoff anzupassen).<br />
Ich biete ja auch keinen &quot;Fußball&quot;-Kurs an, in dem ich dann den Leuten Basketball beibringe....</p>
<p>Eine Rückfrage hätte ich an so jemanden: &quot;Warum printf() benutzen dürfen aber nicht cout? Warum memcpy() aber nicht copy()?&quot; Sind jeweils gleichwertige &quot;Bibliotheksfunktionen&quot;...</p>
<p>(dann könnte man noch fragen, wieso z.B. der +-operator für einige Typen (z.B. int) erlaubt wird, für andere (z.B. std::string) aber nicht?)</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789489</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789489</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 08 Oct 2009 07:03:48 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Strings on Thu, 08 Oct 2009 11:44:07 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>lil_pingu schrieb:</p>
<blockquote>
<p>...der Autor eher ein C-Freak war ...</p>
</blockquote>
<p>Ich neige dazu, solche Leute nicht auch noch mit Euphemismen (&quot;C-Freak&quot;, &quot;C-Nerd&quot;, ...) zu titulieren.<br />
Passender wäre:<br />
- &quot;lernresistent&quot;,<br />
- &quot;nicht mit den eigenen Wissensgrenzen vertraut&quot;<br />
- und bisweilen auch schlicht &quot;faul&quot; (seine Übungsaufgaben dem Lernstoff anzupassen).<br />
Ich biete ja auch keinen &quot;Fußball&quot;-Kurs an, in dem ich dann den Leuten Basketball beibringe....</p>
<p>Eine Rückfrage hätte ich an so jemanden: &quot;Warum printf() benutzen dürfen aber nicht cout? Warum memcpy() aber nicht copy()?&quot; Sind jeweils gleichwertige &quot;Bibliotheksfunktionen&quot;...</p>
<p>(dann könnte man noch fragen, wieso z.B. der +-operator für einige Typen (z.B. int) erlaubt wird, für andere (z.B. std::string) aber nicht?)</p>
</blockquote>
<p>das problem ist eben einfach, dass programmieren lehren mit einer ständigen weiterbildung verbunden ist - und damit eins der wenigen gebiete ist, wo man keine 10Jahre alten Skripte mehr nutzen kann... Aber da andere Prof`s sich auch nicht weiterbilden müssen, sehen die Prof`s das irgendwie auch nicht ein...<br />
Und offensichtlich zwingt sie auch niemand dazu -.-<br />
Aber das ist wohl eher ein Makel der (Hoch-)Schul-Politik... Wenn das nicht unbedingt das Hobby Nr. 1 ist und es nicht bezahlt wird, würde ichs auch nicht einsehen...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789605</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789605</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 08 Oct 2009 11:44:07 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Strings on Thu, 08 Oct 2009 12:44:14 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>...sehen die Prof`s das irgendwie auch nicht ein...</p>
</blockquote>
<p>... und außerdem werden auch nur selten die &quot;top notch&quot;-Profs in die Lehre geschickt.</p>
<p>Aber letztlich ändert die Motivation für eine Einstellung weder an ihrer Bezeichnung noch an ihren Auswirkungen etwas.</p>
<p>Von einem &quot;Zwang für Profs&quot; halte ich in so einem Zusammenhang eher weniger. Wenn man Bildung wirklich voranbringen wollte, müsste man sie gleichzeitig attraktiver und nur für höhere Qualifizierte erreichbar machen (gilt für Lehrer aller Ausprägungen)...<br />
Solange Lehre/Ausbildung/Erziehung immer noch als &quot;Abstellgleis für die, die das Eigentliche nicht ganz geschafft haben&quot; beurteilt und bezahlt wird, wird man auch genau die bekommen (+ ein paar Idealisten).</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789652</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 08 Oct 2009 12:44:14 GMT</pubDate></item><item><title><![CDATA[Reply to Array aus Strings on Thu, 08 Oct 2009 13:20:38 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Von einem &quot;Zwang für Profs&quot; halte ich in so einem Zusammenhang eher weniger. Wenn man Bildung wirklich voranbringen wollte, müsste man sie gleichzeitig attraktiver und nur für höhere Qualifizierte erreichbar machen (gilt für Lehrer aller Ausprägungen)...<br />
Solange Lehre/Ausbildung/Erziehung immer noch als &quot;Abstellgleis für die, die das Eigentliche nicht ganz geschafft haben&quot; beurteilt und bezahlt wird, wird man auch genau die bekommen (+ ein paar Idealisten).</p>
</blockquote>
<p>Natürlich wäre das der bessere Weg - allerdings auch der teurere...<br />
Und man hat die letzten Jahre gut was dafür getan, dass es in die andere Richtung geht... Entsprechend lange wird es dauern, bis man diesen Fehler zugibt, ihn behebt und dann diese berufsgruppe dann noch atraktiver zu machen, als sie noch vor paar Jahren war...<br />
so lange man in der wirtschaft so extrem viel mehr geld verdient als ein lehrender, wird man sich eben auch mit denen zufriedengeben müssen, die sich nicht fähig genug finden, mehr Geld zu verdienen...</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1789686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1789686</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Thu, 08 Oct 2009 13:20:38 GMT</pubDate></item></channel></rss>