Kuinka C#:lla tehdään konsoliohjelma, joka tulostaa luupissa "Moi!" toistuvasti kunnes käyttäjä painaa esciä? Eli siis tekisi tulostusta myös silloin kun mitään näppäintä ei paineta. Käytössä Linux Mint 19 ja bash.
Ohjelman katkaiseminen escistä
8
336
Vastaukset
do { while (! Console.KeyAvailable) { Console.WriteLine("Moi!"); } } while (Console.ReadKey(true).Key != ConsoleKey.Escape);
- zsdfgcguk
Et vastannut kysymykseen.
zsdfgcguk kirjoitti:
Et vastannut kysymykseen.
Vastasinhan: https://keskustelu.suomi24.fi/t/15392381/ohjelman-katkaiseminen-escista#comment-94866775
Tuo ohjelma tekee sen mitä pyydetään.
Oikealla C-kielellä tuo onkin vähän monimutkaisempaa. Copy–paste-koodausta muutamalla muutoksella:
----
#include <stdio.h>
#include <termios.h>
#include <unistd.h>
#include <fcntl.h>
#include <stdlib.h>
#define ESC 27
static void err_exit(const char *msg);
int main(void)
{
int c;
int oc = '\0';
struct termios staryTermios, novyTermios;
int oflags, nflags;
if (tcgetattr(STDIN_FILENO, &staryTermios) != 0)
err_exit("tcgetattr() failed");
novyTermios = staryTermios;
novyTermios.c_lflag &= ~(ICANON);
if (tcsetattr(STDIN_FILENO, TCSANOW, &novyTermios) != 0)
err_exit("tcsetattr() failed to set standard input");
oflags = fcntl(STDIN_FILENO, F_GETFL);
if (oflags < 0)
err_exit("fcntl() F_GETFL failed");
nflags = oflags;
nflags |= O_NONBLOCK;
if (fcntl(STDIN_FILENO, F_SETFL, nflags) == -1)
err_exit("fcntl() F_SETFL failed");
while ((c = getchar()) != ESC)
{
printf("Moi!\n");
}
if (tcsetattr(STDIN_FILENO, TCSANOW, &staryTermios) != 0)
err_exit("tcsetattr() failed to reset standard input");
putchar('\n');
return 0;
}
static void err_exit(const char *msg)
{
fprintf(stderr, "%s\n", msg);
exit(1);
}Ja rivit
int c;
int oc = '\0';
voi poistaa ja muuttaa rivin
while ((c = getchar()) != ESC)
muotoon
while ((getchar()) != ESC)
Kopioimassa koodissa tulostettiin näppäimiltä painettuja merkkejä, ja siksi tarvittiin apumuuttujia.
- yyfjtytf
>>staryTermios, novyTermios;
Oletko serbialainen? - rekursiivistaajatusta
Is called recursive function calls, that go on and on untin some thing in logic stops.
- Very usual in c-code, espesially in 3D-accelerator codes...
Aika helppoa siis jos vain sen ymmärtää :D
Ketjusta on poistettu 1 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Missä kokoomuksen naiset?
Hähmäistä ukkotarinaa kuultu koko viikonloppu. Kukaan ei ole kokoomuksessa edes yrittänyt pitää naisten puolta. Jopa853568Finland is now Petter place
Audin B-ryhmän ralliautolla saatiin kansa voimaan hyvin. Kiitos kokoomus huumoripläjäyksestä.292363Ilman Stadia Suomessa ei olisi kunnon lihajalosteita
HK, Helsingin makkaratehdas, Votkin, mitä näitä nyt onkaan. Böndellä ei ole kunnollisia jalostajia.1402006Huomasitko? Tidjan Ban tyttöystävä paljastui - Tuttu kohutusta rakkausrealitystä
Ban tyttöystävä on Kolmiodraama-realityn Heidi Kytö. Ba ja Kytö kertoivat maaliskuussa 2026 somessa, että he ovat seurus171616- 631254
Alkuperäinen Jeesuksen antama kastekäsky on Matteuksen evankeliumissa
Matt.28:16-20 16 Ja ne yksitoista opetuslasta vaelsivat Galileaan sille vuorelle, jonne Jeesus oli käskenyt heidän menn1631217Vilpitön totuudenetsiä löytää totuuden kasteesta.
Nykyaikana on niin paljon tietoa saatavilla että vilpitön totuudenetsiä löytää totuuden myös kristillisestä kasteesta. R4501062- 59903
Kirkon kastekaava on väärin - oikea kaava löytyy Apostolien tekojen kirjasta
Raamatussa on kaksi ristiriitaista kastekaavaa. Toinen ei voi olla oikea. Kumpi on alkuperäinen? "Menkää siis ja tehkää73898- 77889