<?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[schleifenabbruch auf tastendruck]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich bin hier neu im Forum, weil ich n kleines Problem hab, folgendes:</p>
<p>Ich möchte eine Schleife programmieren, die abbricht, wenn der Benutzer den Buchstaben 'q' drückt, allerdings ohne, dass die Schleife auf den jeweiligen Tastendruck wartet, wie man es z.B. vom cin.get() kennt.<br />
Da ich unter Linux arbeite, steht mir kbhit() nicht zu Verfügung und auch per copyandpaste funktioniert kbhit() nicht so, wie gewünscht.</p>
<p>Ich hab ein paar Sachen über multithreads gelesen oder über GetAsyncKeyState, weiß allerdings nicht ob das genauso funktioniert bzw. ob es nicht einfacherer Methoden gibt.</p>
<p>Ich hoffe ihr könnt mir da helfen <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>MfG<br />
Thunderwulf91</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/331338/schleifenabbruch-auf-tastendruck</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 17:38:27 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/331338.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 23 Feb 2015 11:07:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to schleifenabbruch auf tastendruck on Mon, 23 Feb 2015 11:07:10 GMT]]></title><description><![CDATA[<p>Hallo Leute,</p>
<p>ich bin hier neu im Forum, weil ich n kleines Problem hab, folgendes:</p>
<p>Ich möchte eine Schleife programmieren, die abbricht, wenn der Benutzer den Buchstaben 'q' drückt, allerdings ohne, dass die Schleife auf den jeweiligen Tastendruck wartet, wie man es z.B. vom cin.get() kennt.<br />
Da ich unter Linux arbeite, steht mir kbhit() nicht zu Verfügung und auch per copyandpaste funktioniert kbhit() nicht so, wie gewünscht.</p>
<p>Ich hab ein paar Sachen über multithreads gelesen oder über GetAsyncKeyState, weiß allerdings nicht ob das genauso funktioniert bzw. ob es nicht einfacherer Methoden gibt.</p>
<p>Ich hoffe ihr könnt mir da helfen <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>MfG<br />
Thunderwulf91</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443955</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443955</guid><dc:creator><![CDATA[Thunderwulf91]]></dc:creator><pubDate>Mon, 23 Feb 2015 11:07:10 GMT</pubDate></item><item><title><![CDATA[Reply to schleifenabbruch auf tastendruck on Mon, 23 Feb 2015 11:11:34 GMT]]></title><description><![CDATA[<p>Die von dir genannten Funktionen sind Windows-Funktionen. Fuer Linux suchst du wohl nach ncurses.<br />
Das sollte eigentlich auch schon installiert sein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443958</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443958</guid><dc:creator><![CDATA[Hyde++ 0]]></dc:creator><pubDate>Mon, 23 Feb 2015 11:11:34 GMT</pubDate></item><item><title><![CDATA[Reply to schleifenabbruch auf tastendruck on Mon, 23 Feb 2015 12:41:14 GMT]]></title><description><![CDATA[<p>ja eben, das ist halt auch irgendwo das Problem mit den Windowsfunktionen.<br />
von ncurses hab ich schon gehört, habe allerdings keine Ahnung, wie man mit ncurses umgeht und was diese so alles mit sich bringt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443981</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443981</guid><dc:creator><![CDATA[Thunderwulf91]]></dc:creator><pubDate>Mon, 23 Feb 2015 12:41:14 GMT</pubDate></item><item><title><![CDATA[Reply to schleifenabbruch auf tastendruck on Mon, 23 Feb 2015 12:51:22 GMT]]></title><description><![CDATA[<p>Thunderwulf91 schrieb:</p>
<blockquote>
<p>ja eben, das ist halt auch <strong>irgendwo</strong> das Problem mit den Windowsfunktionen.</p>
</blockquote>
<p>Die sind auch nicht für &quot;irgendwo&quot;, sondern für Windows - welche Überraschung ...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2443984</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2443984</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Mon, 23 Feb 2015 12:51:22 GMT</pubDate></item><item><title><![CDATA[Reply to schleifenabbruch auf tastendruck on Mon, 23 Feb 2015 15:34:32 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>Thunderwulf91 schrieb:</p>
<blockquote>
<p>ja eben, das ist halt auch <strong>irgendwo</strong> das Problem mit den Windowsfunktionen.</p>
</blockquote>
<p>Die sind auch nicht für &quot;irgendwo&quot;, sondern für Windows - welche Überraschung ...</p>
</blockquote>
<p>Dass diese Funktionen, Windowsfunktionen sind war mir bereits vorher klar, ich suche hier lediglich eine Möglichkeit das in Linux umzusetzen oder auf andere Dinge zurückzugreifen, die evtl. vom Einfachheitsgrad mit kbhit ähnlich sind.<br />
Dumme Bemerkungen kann im Forum btw. niemand gebrauchen <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444004</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444004</guid><dc:creator><![CDATA[Thunderwulf91]]></dc:creator><pubDate>Mon, 23 Feb 2015 15:34:32 GMT</pubDate></item><item><title><![CDATA[Reply to schleifenabbruch auf tastendruck on Mon, 23 Feb 2015 16:12:35 GMT]]></title><description><![CDATA[<p>Jaja, erstmal rummeckern.<br />
Ich habe dir geraten, dir ncurses anzusehen, wenn du darauf nur</p>
<blockquote>
<p>von ncurses hab ich schon gehört, habe allerdings keine Ahnung, wie man mit ncurses umgeht und was diese so alles mit sich bringt</p>
</blockquote>
<p>antwortest, kann man dir auch nicht helfen. Was meinst du, wozu es Dokumentationen, manpages etc. gibt?<br />
Edit: koennte ja zu schwierig sein, mit google zu suchen:</p>
<p><a href="http://www.tldp.org/HOWTO/NCURSES-Programming-HOWTO/" rel="nofollow">http://www.tldp.org/HOWTO/NCURSES-Programming-HOWTO/</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444013</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444013</guid><dc:creator><![CDATA[Hyde++ 0]]></dc:creator><pubDate>Mon, 23 Feb 2015 16:12:35 GMT</pubDate></item><item><title><![CDATA[Reply to schleifenabbruch auf tastendruck on Mon, 23 Feb 2015 18:12:49 GMT]]></title><description><![CDATA[<p>also aus den manpages wurde ich bisher nicht wirklich schlau und auch sonst aus einigen docs über ncurses nicht. Dein Link hat mir allerdings geholfen, daher schonmal danke <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /><br />
Abgesehen davon, mecker ich nur, weil man manch unnötige Kommentare einfach nicht gebrauchen kann, dafür ist ein Forum eben nicht da</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444039</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444039</guid><dc:creator><![CDATA[Thunderwulf91]]></dc:creator><pubDate>Mon, 23 Feb 2015 18:12:49 GMT</pubDate></item><item><title><![CDATA[Reply to schleifenabbruch auf tastendruck on Tue, 24 Feb 2015 09:03:31 GMT]]></title><description><![CDATA[<p>Gibts unter Linux denn keine API zu den OS-Funktionen, so wie unter Windows?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444118</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 24 Feb 2015 09:03:31 GMT</pubDate></item><item><title><![CDATA[Reply to schleifenabbruch auf tastendruck on Tue, 24 Feb 2015 09:05:53 GMT]]></title><description><![CDATA[<p>Thunderwulf91 schrieb:</p>
<blockquote>
<p>Abgesehen davon, mecker ich nur, weil man manch unnötige Kommentare einfach nicht gebrauchen kann, dafür ist ein Forum eben nicht da</p>
</blockquote>
<p>Unnötig ist es, über Windows-Funktionen zu lamentieren, wenn man unter Linux programmiert.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444120</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444120</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Tue, 24 Feb 2015 09:05:53 GMT</pubDate></item><item><title><![CDATA[Reply to schleifenabbruch auf tastendruck on Tue, 24 Feb 2015 09:06:44 GMT]]></title><description><![CDATA[<p>Belli schrieb:</p>
<blockquote>
<p>Gibts unter Linux denn keine API zu den OS-Funktionen, so wie unter Windows?</p>
</blockquote>
<p>linux funktioniert anders. Schlanker Kernel, der rest alles externe Pakete. Insofern ist ncurses wohl das, was am nächsten zu &quot;den OS-Funktionen&quot; kommt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2444121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444121</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Tue, 24 Feb 2015 09:06:44 GMT</pubDate></item><item><title><![CDATA[Reply to schleifenabbruch auf tastendruck on Tue, 24 Feb 2015 12:22:52 GMT]]></title><description><![CDATA[<p>Man braucht nicht direkt ncurses, sondern kann auch die Tastatur so umstellen, dass Input sofort verfügbar ist (ICANON aus) und nicht erst nach Eingabe von Newline. Man kann dann mit select() schauen, ob überhaupt was Neues reingekommen ist und dann ggf. lesen.<br />
Allerdings muss man die Einstellungen am Ende des Programms wiederherstellen (muss man auch bei ncurses entsprechend).<br />
Unter der Haube macht ncurses wohl auch nix anderes, nur bietet es noch weit mehr Möglichkeiten. Spätestens wenn es um Farben geht ist es nahezu Pflicht, um die Unterschiede der unter Linux verwendeten Consolen wegzuwrappen.</p>
<p>Zu Beginn des Programms:</p>
<pre><code>struct termios oldSettings;   // brauchen wir am Ende wieder
    tcgetattr( fileno(stdin), &amp;oldSettings );

    struct termios newSettings( oldSettings );
    newSettings.c_lflag &amp;= (~ICANON &amp; ~ECHO);
    tcsetattr( fileno(stdin), TCSANOW, &amp;newSettings );
</code></pre>
<p>Am Ende des Programms:</p>
<pre><code>tcsetattr( fileno(stdin), TCSANOW, &amp;oldSettings );
</code></pre>
<p>Abfrage eines Zeichens:</p>
<pre><code>char getKey()
{    
    struct timeval timeOut;
    timeOut.tv_sec =  0;
    timeOut.tv_usec = 0;

    fd_set set;
    FD_ZERO( &amp;set );
    FD_SET( fileno(stdin), &amp;set );

    if( select( fileno(stdin)+1, &amp;set, NULL, NULL, &amp;timeOut ) &gt; 0 )
    {
        char c;
        if( 1 == read( fileno(stdin), static_cast&lt;void*&gt;(&amp;c), sizeof(char) ))
        {
            return c;
        }
    }

    // Timeout, select- oder read-Error
    return '\0';
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2444126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2444126</guid><dc:creator><![CDATA[minastaros]]></dc:creator><pubDate>Tue, 24 Feb 2015 12:22:52 GMT</pubDate></item></channel></rss>