<?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[Anzahl eines Buchstabens in einem String]]></title><description><![CDATA[<p>Hi,</p>
<p>ich soll eine Funktion schreiben, welche die Anzahl eines bestimmten Buchstabens in einem Wort wiedergibt. Ich habe bisher folgendes erreichen können:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string.h&gt;
using namespace std;

int countchar(char *str, char c);

int countchar(char *str, char c) {

int z, i;

z = 0;

int len = strlen(str);

	for (i = 0; i &lt;= len; i++) {

		if (str[i] == c) {

			z = z+1;

		}

	}

	return z;

};

int main () {

char *str;
char c;
int z;

	cout &lt;&lt; &quot;Geben Sie bitte das Wort ein&quot; &lt;&lt; endl;

	cin &gt;&gt; str;

	cout &lt;&lt; &quot;Welcher Buchstabe soll gesucht werden?&quot; &lt;&lt; endl;

	cin &gt;&gt; c;

		z = countchar(str, c);

	cout &lt;&lt; &quot;Der Buchstabe kommt in dem Wort &quot; &lt;&lt; z &lt;&lt; &quot; mal vor&quot; &lt;&lt; endl;

}
</code></pre>
<p>Den Fehler, den ich nun beim Ausführen nach Eingabe des Wortes bekomme, ist (Das Kompilieren funktioniert problemlos):</p>
<p>Segmentation Fault: 11</p>
<p>Nach meinen Google Ergebnissen scheint das ein sehr häufiger Fehler im Zusammenhang mit Pointern zu sein, mir ist allerdings nicht klar geworden, wo er bei mir liegt.</p>
<p>Ich würde mich freuen, wenn mir jemand von euch helfen kann!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/297932/anzahl-eines-buchstabens-in-einem-string</link><generator>RSS for Node</generator><lastBuildDate>Fri, 14 Aug 2026 03:14:41 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/297932.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 09 Jan 2012 22:33:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Anzahl eines Buchstabens in einem String on Mon, 09 Jan 2012 22:33:39 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich soll eine Funktion schreiben, welche die Anzahl eines bestimmten Buchstabens in einem Wort wiedergibt. Ich habe bisher folgendes erreichen können:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string.h&gt;
using namespace std;

int countchar(char *str, char c);

int countchar(char *str, char c) {

int z, i;

z = 0;

int len = strlen(str);

	for (i = 0; i &lt;= len; i++) {

		if (str[i] == c) {

			z = z+1;

		}

	}

	return z;

};

int main () {

char *str;
char c;
int z;

	cout &lt;&lt; &quot;Geben Sie bitte das Wort ein&quot; &lt;&lt; endl;

	cin &gt;&gt; str;

	cout &lt;&lt; &quot;Welcher Buchstabe soll gesucht werden?&quot; &lt;&lt; endl;

	cin &gt;&gt; c;

		z = countchar(str, c);

	cout &lt;&lt; &quot;Der Buchstabe kommt in dem Wort &quot; &lt;&lt; z &lt;&lt; &quot; mal vor&quot; &lt;&lt; endl;

}
</code></pre>
<p>Den Fehler, den ich nun beim Ausführen nach Eingabe des Wortes bekomme, ist (Das Kompilieren funktioniert problemlos):</p>
<p>Segmentation Fault: 11</p>
<p>Nach meinen Google Ergebnissen scheint das ein sehr häufiger Fehler im Zusammenhang mit Pointern zu sein, mir ist allerdings nicht klar geworden, wo er bei mir liegt.</p>
<p>Ich würde mich freuen, wenn mir jemand von euch helfen kann!</p>
<p>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166112</guid><dc:creator><![CDATA[wdposchmann]]></dc:creator><pubDate>Mon, 09 Jan 2012 22:33:39 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl eines Buchstabens in einem String on Mon, 09 Jan 2012 22:48:20 GMT]]></title><description><![CDATA[<p>Die schnelle Lösung: statt char* str in main char str[1024]</p>
<p>die sinnvolle Lösung: benutze std::string. Immer!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166116</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166116</guid><dc:creator><![CDATA[manni66]]></dc:creator><pubDate>Mon, 09 Jan 2012 22:48:20 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl eines Buchstabens in einem String on Mon, 09 Jan 2012 22:52:32 GMT]]></title><description><![CDATA[<p>str ist ein Zeiger, er zeigt ins Nirvana in den es das Programm schickt<br />
sobald da Werte reingeschrieben werden ...</p>
<p>char str[vielplatz] anstelle *str sollte helfen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166117</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166117</guid><dc:creator><![CDATA[Scheppertreiber]]></dc:creator><pubDate>Mon, 09 Jan 2012 22:52:32 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl eines Buchstabens in einem String on Mon, 09 Jan 2012 22:53:42 GMT]]></title><description><![CDATA[<p>Bei mir funktioniert der Code. Ich würde jedoch vll. folgendes umändern:<br />
Statt:</p>
<pre><code class="language-cpp">for (i = 0; i &lt;= len; i++) {
</code></pre>
<p>würde ich:</p>
<pre><code class="language-cpp">for (i = 0; i &lt; len; i++) {
</code></pre>
<p>Da es sich beim letzten Zeichen sich um das Terminierungsbit handelt, braucht es nicht mit einem Zeichen zu vergleichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166119</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166119</guid><dc:creator><![CDATA[LEARNcpp]]></dc:creator><pubDate>Mon, 09 Jan 2012 22:53:42 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl eines Buchstabens in einem String on Mon, 09 Jan 2012 22:58:29 GMT]]></title><description><![CDATA[<p>LEARNcpp schrieb:</p>
<blockquote>
<p>Bei mir funktioniert der Code.</p>
</blockquote>
<p>Mutig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166120</guid><dc:creator><![CDATA[Scheppertreiber]]></dc:creator><pubDate>Mon, 09 Jan 2012 22:58:29 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl eines Buchstabens in einem String on Mon, 09 Jan 2012 23:02:33 GMT]]></title><description><![CDATA[<p>Scheppertreiber schrieb:</p>
<blockquote>
<p>LEARNcpp schrieb:</p>
<blockquote>
<p>Bei mir funktioniert der Code.</p>
</blockquote>
<p>Mutig <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f576.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--sunglasses"
      title=":sunglasses:"
      alt="🕶"
    /></p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /> Habs kapiert ^^ wusste das jezt sowas kommt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166121</guid><dc:creator><![CDATA[LEARNcpp]]></dc:creator><pubDate>Mon, 09 Jan 2012 23:02:33 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl eines Buchstabens in einem String on Mon, 09 Jan 2012 23:07:44 GMT]]></title><description><![CDATA[<p>Vielen Dank euch allen für die vielen schnellen Antworten. Jetzt läuft das Programm!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166122</guid><dc:creator><![CDATA[wdposchmann]]></dc:creator><pubDate>Mon, 09 Jan 2012 23:07:44 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl eines Buchstabens in einem String on Tue, 10 Jan 2012 14:15:54 GMT]]></title><description><![CDATA[<p>das hier läuft??</p>
<pre><code class="language-cpp">char * str;
cin &gt;&gt; str;
</code></pre>
<p>dann hast du aber verdammtes glück. vielleicht solltest du bei dem glück was lotto spielen, so kommst du gut an geld...</p>
<p>ne mal spass beiseite: wie einer der vorredner schon gesagt hat, zeigt der pointer randommässig in den speicher, und dahin versuchst du mit cin dann zu schreiben. das wird früher oder später die erdachse kippen und die sonne implodieren lassen</p>
<p>guck dir mal std::string an, oder wenn du echt low level auf C-ebene bleiben willst, dann guck dir (dynamische) speicherverwaltung und c-strings an</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166334</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166334</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Tue, 10 Jan 2012 14:15:54 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl eines Buchstabens in einem String on Wed, 11 Jan 2012 09:58:13 GMT]]></title><description><![CDATA[<p>wdposchmann schrieb:</p>
<blockquote>
<pre><code class="language-cpp">char *str;
cin &gt;&gt; str;
</code></pre>
<p>Den Fehler, den ich nun beim Ausführen nach Eingabe des Wortes bekomme, ist (Das Kompilieren funktioniert problemlos):</p>
<p>Segmentation Fault: 11</p>
<p>Nach meinen Google Ergebnissen scheint das ein sehr häufiger Fehler im Zusammenhang mit Pointern zu sein, mir ist allerdings nicht klar geworden, wo er bei mir liegt.</p>
</blockquote>
<p>Der Zeiger str wurde nirgens initialisiert. Bei cin&gt;&gt;str wird auch nicht extra Speicher angefordert und der Zeiger entsprechend modifiziert, dass er auf diesen neuen Speicherbereich zeigt. Der Operator geht davon aus, dass der Zeiger schon auf einen gültigen, vorher reservierten Speicherbereich zeigt.</p>
<p>Allerdings ist dieser Operator (in Verwendung mit char* auf der rechten Seite) eh gefährlich, da die Funktion, die dahinter steckt, gar nicht weiß, wieviel Platz überhaupt benutzt werden darf. Ist der reservierte Speicher zu klein, fliegt dir das dann wieder um die Ohren. Im besten Fall bekommst Du wieder einen solchen Speicherzugriffsfehler und das Betriebssystem killt Dein Programm. Im schlechten Fall, läuft den Programm weiter, produziert Müll oder kackt irgendwo anders unerklärlich ab, weil irgendwas nicht stimmt und du in Freispeicherbereiche geschrieben hast, wo Du nichts drin verloren hast.</p>
<p>Der Typ char* ist für Adressvariablen (Zeiger), nicht für Stringvariablen. Wenn Du eine Variable möchtest, die Strings statt Adressen (auf wer weiß was) speichert, dann ist std::string der richtige Typ für diese Anwendung. Dazu inkludierst Du dann noch &lt;string&gt;. Du kannst natürlich ach manuell Speicher verwalten und Dir die entsprechenden Adressen über Zeiger merken. Das ist aber nicht im Sinne von C++ und der Kapselung, die Dir C++ für ein angenehmeres Programmieren erlaubt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166630</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166630</guid><dc:creator><![CDATA[krümelkacker]]></dc:creator><pubDate>Wed, 11 Jan 2012 09:58:13 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl eines Buchstabens in einem String on Wed, 11 Jan 2012 10:40:19 GMT]]></title><description><![CDATA[<p>Vermutlich wieder eine Aufgabenstellung der Kategorie &quot;C mit Klassen&quot;.<br />
In C++ kann man das so lösen:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;limit&gt;
#include &lt;algorithm&gt;

int main()
{
   char Letter = 0;
   std::string Input;

   std::cout &lt;&lt; &quot;Bitte geben Sie das Wort ein: &quot; 
   std::cin &gt;&gt; Input;

   // Fallstrick:
   // Wenn ein Leerzeichen im Wort vorhanden ist wird nur bis zum Leerzeichen
   // aus std::cin gelesen, die übrigen Buchstaben verbleiben im Eingabepuffer
   // und würden beim nächsten Einlesen gelesen. Daher den Rest der Eingabe 
   // bis zum CR verwerfen
   std::cin.ignore( std::numeric_limits&lt;int&gt;::max(), '\n' );

   std::cout &lt;&lt; &quot;Bitte geben Sie den zu suchenden Buchstaben ein: &quot;;
   std::cin &gt;&gt; Letter;

   std::size_t Count = count( Input.begin(), Input.end(), Letter );
   std::cout &lt;&lt; &quot;Der Buchstabe &quot; &lt;&lt; Letter &lt;&lt; &quot; kommt im Wort &quot; &lt;&lt; Input 
             &lt;&lt; &quot; &quot; &lt;&lt; Count &lt;&lt; &quot;x vor.&quot; &lt;&lt; endl;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2166661</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166661</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 11 Jan 2012 10:40:19 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl eines Buchstabens in einem String on Wed, 11 Jan 2012 10:53:05 GMT]]></title><description><![CDATA[<p>DocShoe schrieb:</p>
<blockquote>
<pre><code class="language-cpp">// Fallstrick:
   // Wenn ein Leerzeichen im Wort vorhanden ist wird nur bis zum Leerzeichen
   // aus std::cin gelesen, die übrigen Buchstaben verbleiben im Eingabepuffer
   // und würden beim nächsten Einlesen gelesen. Daher den Rest der Eingabe 
   // bis zum CR verwerfen
</code></pre>
</blockquote>
<p>Deshalb gibt es <code>std::getline</code> .</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166673</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166673</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Wed, 11 Jan 2012 10:53:05 GMT</pubDate></item><item><title><![CDATA[Reply to Anzahl eines Buchstabens in einem String on Wed, 11 Jan 2012 11:08:17 GMT]]></title><description><![CDATA[<p>Ja, aber dann hast du die ganze Zeile. Die Aufgabenstellung war doch Wort, oder irre ich mich da?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2166683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2166683</guid><dc:creator><![CDATA[DocShoe]]></dc:creator><pubDate>Wed, 11 Jan 2012 11:08:17 GMT</pubDate></item></channel></rss>