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
290
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
Jos nainen harrastaa seksiä
Useiden kanssa, miten se eroaa miesten mielestä siitä, jos miehellä on ollut useita s kumppaneita? Oletan että kaikki mi3083148Ikävöin sinua kokoyön!
En halua odottaa, että voisin näyttää sinulle kuinka paljon rakastan sinua. Toivon, että uskot, että olen varsin hullun181981Pihlaja-puulle
Illat on mulle pahimpia. En tiiä miks se olis vaan parasta yöstä toiseen nukkua sun kanssa ja herätä sun kasvoihin. Jos151830Päivieni piristys, missä olet?
Toit iloa ja valoa mun elämään ☀️ Nyt mennyt kohta viikko ettei ole nähty. Kaipaan nähdä sua silti ja pelkään vaikka tei141575Kova karman laki
Karman lain kautta pahantekijä tehdessään pahaa toteuttaa koston ja rangaistuksen sille jolle pahaa on tehty. Tämä tarko3991451Kysymys Kuhmolaisille
Hei. Olen 32 vuotias nainen ja muutin Kuhmoon noin 12 vuotta sitten. Mutta nyt täytyy ihmetellä ihan ääneen että onhan t341337Savimajasta lääketieteen tohtoriksi - ja ei tikkua ristiin
”Jos ihminen muuttaa savimajasta tänne kerrostaloon länsimaisen elintason piiriin ilman että tarvitsee panna tikkua rist2191230- 171094
Olen valtavan ihastunut
Yritin sen sinulle viime viikolla kertoa, mutta liikaa muuttujia ja isoja tunteita, niin en kyllä ollut kovin selkeä.631046Ensi viikolla tulen takaisin
Ja käyn varmaan siellä monta kertaa. Monta mahdollisuutta nähdä jos olet siellä päin20980