<?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[getchar() wird übersprungen]]></title><description><![CDATA[<p>Hi, nur wenn ich sowohl im Hauptprogramm und in den einzelnen Funktionen ein getchar(); schreibe wird dort angehalten, wenn ich das nur in der Funktion oder nur im Hauptprogramm schreibe, wird es übersprungen. Warum???????????</p>
<p>Hier mein Code:</p>
<pre><code class="language-csharp">#include &lt;iostream&gt;
#include &lt;math.h&gt;
using namespace std;

void Ausgabetext();
void km_Meilen();
void Meilen_km();

int main()
{
	int iEingabe=0;

	cout &lt;&lt; &quot;\tUmrechnung km - Meilen / Meilen - km\n&quot;;
	Ausgabetext();						// Aufruf der Funktion Ausgabetext
	cout &lt;&lt; &quot;\n1 --&gt; km - Meilen&quot;;
	cout &lt;&lt; &quot;\n2 --&gt; Meilen - km&quot;;
	cout &lt;&lt; &quot;\n\nEingabe: &quot;;
	cin &gt;&gt; iEingabe;

	if (iEingabe == 1)
	{	km_Meilen();					// Aufruf der Funktion km_Meilen
	}
	else
	{	Meilen_km();					// Aufruf der Funktion Meilen_km
	}
	getchar();
}

// ------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------
void Ausgabetext()
{
	cout &lt;&lt; &quot;\nBitte machen Sie die geforderte Eingabe.&quot;; 
	cout &lt;&lt; &quot;\nDas Programm wird fuer Sie dann die gewuenschten Optionen durchfuehren.\n&quot;;
}

// ------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------
void km_Meilen()
{	double dkm=0;
	double dmile=0;

	Ausgabetext();
	cout &lt;&lt; &quot;\nkm:\t&quot;;
	cin &gt;&gt; dkm;
	dmile=dkm/1.609;
	cout &lt;&lt; dkm &lt;&lt; &quot; km entsprechen &quot; &lt;&lt; dmile &lt;&lt; &quot; Meilen.&quot;;
}

// ------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------
void Meilen_km()
{	double dmile=0;
	double dkm=0;

	Ausgabetext();
	cout &lt;&lt; &quot;\nMeilen:\t&quot;;
	cin &gt;&gt; dmile;
	dkm=dmile*1.609;
	cout &lt;&lt; dmile &lt;&lt; &quot; Meilen entsprechen &quot; &lt;&lt; dkm &lt;&lt; &quot; km.&quot;;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/132784/getchar-wird-übersprungen</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 15:11:58 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/132784.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 13 Jan 2006 06:40:03 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to getchar() wird übersprungen on Fri, 13 Jan 2006 06:40:03 GMT]]></title><description><![CDATA[<p>Hi, nur wenn ich sowohl im Hauptprogramm und in den einzelnen Funktionen ein getchar(); schreibe wird dort angehalten, wenn ich das nur in der Funktion oder nur im Hauptprogramm schreibe, wird es übersprungen. Warum???????????</p>
<p>Hier mein Code:</p>
<pre><code class="language-csharp">#include &lt;iostream&gt;
#include &lt;math.h&gt;
using namespace std;

void Ausgabetext();
void km_Meilen();
void Meilen_km();

int main()
{
	int iEingabe=0;

	cout &lt;&lt; &quot;\tUmrechnung km - Meilen / Meilen - km\n&quot;;
	Ausgabetext();						// Aufruf der Funktion Ausgabetext
	cout &lt;&lt; &quot;\n1 --&gt; km - Meilen&quot;;
	cout &lt;&lt; &quot;\n2 --&gt; Meilen - km&quot;;
	cout &lt;&lt; &quot;\n\nEingabe: &quot;;
	cin &gt;&gt; iEingabe;

	if (iEingabe == 1)
	{	km_Meilen();					// Aufruf der Funktion km_Meilen
	}
	else
	{	Meilen_km();					// Aufruf der Funktion Meilen_km
	}
	getchar();
}

// ------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------
void Ausgabetext()
{
	cout &lt;&lt; &quot;\nBitte machen Sie die geforderte Eingabe.&quot;; 
	cout &lt;&lt; &quot;\nDas Programm wird fuer Sie dann die gewuenschten Optionen durchfuehren.\n&quot;;
}

// ------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------
void km_Meilen()
{	double dkm=0;
	double dmile=0;

	Ausgabetext();
	cout &lt;&lt; &quot;\nkm:\t&quot;;
	cin &gt;&gt; dkm;
	dmile=dkm/1.609;
	cout &lt;&lt; dkm &lt;&lt; &quot; km entsprechen &quot; &lt;&lt; dmile &lt;&lt; &quot; Meilen.&quot;;
}

// ------------------------------------------------------------------------------------
// ------------------------------------------------------------------------------------
void Meilen_km()
{	double dmile=0;
	double dkm=0;

	Ausgabetext();
	cout &lt;&lt; &quot;\nMeilen:\t&quot;;
	cin &gt;&gt; dmile;
	dkm=dmile*1.609;
	cout &lt;&lt; dmile &lt;&lt; &quot; Meilen entsprechen &quot; &lt;&lt; dkm &lt;&lt; &quot; km.&quot;;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/965128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965128</guid><dc:creator><![CDATA[sarah1986]]></dc:creator><pubDate>Fri, 13 Jan 2006 06:40:03 GMT</pubDate></item><item><title><![CDATA[Reply to getchar() wird übersprungen on Fri, 13 Jan 2006 07:09:08 GMT]]></title><description><![CDATA[<p>Du hast nach den letzten cin&gt;&gt;... Befehlen noch einen '\n' im Tastaturpuffer - der wird dann vom getchar() ausgelesen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965135</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965135</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 13 Jan 2006 07:09:08 GMT</pubDate></item><item><title><![CDATA[Reply to getchar() wird übersprungen on Fri, 13 Jan 2006 07:19:16 GMT]]></title><description><![CDATA[<p>wo genau? in den funktionen, im hauptprogramm, überall? ich finde aber keins, das wegkann.... was mach ich dann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965139</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965139</guid><dc:creator><![CDATA[sarah1986]]></dc:creator><pubDate>Fri, 13 Jan 2006 07:19:16 GMT</pubDate></item><item><title><![CDATA[Reply to getchar() wird übersprungen on Fri, 13 Jan 2006 07:29:05 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich bin mir nicht ganz sicher, aber soweit ich weiß kannst du anstatt &quot;\n&quot; &quot;endl&quot; schreiben, damit wird der Puffer geleert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965145</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965145</guid><dc:creator><![CDATA[EEK]]></dc:creator><pubDate>Fri, 13 Jan 2006 07:29:05 GMT</pubDate></item><item><title><![CDATA[Reply to getchar() wird übersprungen on Fri, 13 Jan 2006 07:39:56 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/11397">@EEK</a>: was hat denn endl mit der Eingabe zu tun?<br />
<a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/37895">@sarah</a>: Fakt ist, daß du vor dem getchar()-Aufruf deinen Tastaturpuffer ausleeren mußt. Am schnellsten dürfte das mit einem cin.ignore(1,'\n'); funktionieren.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965148</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Fri, 13 Jan 2006 07:39:56 GMT</pubDate></item><item><title><![CDATA[Reply to getchar() wird übersprungen on Fri, 13 Jan 2006 07:50:15 GMT]]></title><description><![CDATA[<p>Ich meinte das wenn Sie anstatt &quot;\n&quot; &quot;endl&quot; schreibt der Puffer dann automatisch geleert wird und somit das &quot;\n&quot; nicht mehr im Puffer steht, aber wie gesagt ich war mir nicht sicher.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965152</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965152</guid><dc:creator><![CDATA[EEK]]></dc:creator><pubDate>Fri, 13 Jan 2006 07:50:15 GMT</pubDate></item><item><title><![CDATA[Reply to getchar() wird übersprungen on Fri, 13 Jan 2006 07:52:28 GMT]]></title><description><![CDATA[<p>sarah1986 schrieb:</p>
<blockquote>
<p>wo genau? in den funktionen, im hauptprogramm, überall? ich finde aber keins, das wegkann.... was mach ich dann?</p>
</blockquote>
<p>Nach jedem cin. Beispiel:</p>
<pre><code class="language-cpp">cin &gt;&gt; iEingabe;
</code></pre>
<p>Du gibst 1 ein und drückst Enter. Dann liegt im Puffer (Stream Buffer) von cin der String &quot;1\n&quot;. Der &gt;&gt; Operator arbeitet folgendermaßen: Erst überspringt er sämtlichen Whitespace (Leerzeichen, Tabs, Newlines etc.), sowas hast du hier aber nicht. Dann liest er, vereinfacht gesagt, solange des gelesene Sinn ergibt, und schreibt das entschlüsselt in die übergebene Variable. Auf dem &quot;\n&quot; bleibt er stehen, und das bleibt nach der Aktion im Puffer und würde vom nächsten &gt;&gt; Operator wieder übersprungen werden. Du rufst aber getchar auf, was dir genau dieses Newline-Zeichen zurückgibt.</p>
<p>Es gibt ca. 3 Lösungen:</p>
<ol>
<li>Du liest alles bis zum \n selbst ein:</li>
</ol>
<pre><code class="language-cpp">while (getchar() != '\n);
</code></pre>
<ol start="2">
<li>Du ignorierst alles, was noch im Puffer ist:</li>
</ol>
<pre><code class="language-cpp">cin.ignore(cin.rdbuf()-&gt;in_avail());
</code></pre>
<p>(das sollte eigentlich in der FAQ stehen, ich habs aber nicht gefunden <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    />)<br />
3) (Hat undefiniertes Verhalten, funktioniert aber wohl auf manchen Systemen und wird daher leider oft empfohlen. Aber nicht von mir <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="🙂"
    /> EEK spielt darauf an, aber formuliert es nicht richtig)</p>
<p>BTW: Du solltest dich auf ein IO-System beschränken. getchar gehört zu &lt;cstdio&gt; und cin zu &lt;iostream&gt;. Die beiden sind zwar standardmäßig synchronisiert, aber das eigentlich nur aus Kompatibilität. In neuen Programmen sollte man das IMHO nicht ausnutzen. Ersetze einfach jedes getchar() durch cin.get().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965155</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965155</guid><dc:creator><![CDATA[Bashar]]></dc:creator><pubDate>Fri, 13 Jan 2006 07:52:28 GMT</pubDate></item><item><title><![CDATA[Reply to getchar() wird übersprungen on Fri, 13 Jan 2006 08:52:21 GMT]]></title><description><![CDATA[<p>cin &gt;&gt; ws;<br />
löscht meiner meinung nach den buffer^^<br />
hilft das?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/965201</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965201</guid><dc:creator><![CDATA[dern00b]]></dc:creator><pubDate>Fri, 13 Jan 2006 08:52:21 GMT</pubDate></item><item><title><![CDATA[Reply to getchar() wird übersprungen on Fri, 13 Jan 2006 10:09:48 GMT]]></title><description><![CDATA[<p>muss ich dann mal probieren. Bin aber grad an was anderem dran. Falls nicht, muss ich halt zweimal den Befehl schreiben.<br />
Auf jeden Fall: TAUSEN DANK AN EUCH ALLE! <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="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/965276</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/965276</guid><dc:creator><![CDATA[sarah1986()]]></dc:creator><pubDate>Fri, 13 Jan 2006 10:09:48 GMT</pubDate></item></channel></rss>