Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Näppäimistö syötteen luku ilman että ohjelman suoritus keskeytyy (C/C++)

Jani K [13.06.2005 14:24:07]

#

Elikkä ajattelin huvin ja urheilun vuoksi kokeilla tehdä herätys kellon koneelle. Ongelmaksi muodostuu herätys, joka olisi kotelokaijuttimen ihana vikinä =). Mutta kotelovikinää ei tule kuin yhden kerran koska ohjelman suoritus pysähtyy scanf lauseeseen. Eli miten saisin ohjelman suorituksen jatkumaan kunnes valitsen 1 tai 2 ???

do
	{
		printf("\a\a"); //Se ihana vikinä
		delay(300000); //Viivettä ohjelmaan
		printf("\n\nValitse:\n1.Lopeta\n2.torkku ");
		scanf("%d",&valinta); //Ongelma kohta
		switch (valinta)
		{
		case 1:
			tunti=0;
			return valinta;
			break;
		case 2:
			minuutti+=5;
			break;
		}
	}
	while(valinta!=1);

Juice [13.06.2005 18:26:08]

#

En ole mikään über C++-koodari, mutta yleensä kahta asiaa yhtäaikaa tehtäessä(tapauksessasi syötteen luku ja muu) käytetään säikeitä (threads).

http://www.google.fi/search?q=c++ threads&sourceid=mozilla-search&start=0&start=0&ie=utf-8&oe=utf-8&client=firefox-a&rls=org.mozilla:fi-FI:official

Metabolix [14.06.2005 08:58:28]

#

Jos olet aiemmin lukenut käyttäjältä syötettä, niin voit yrittää leikkiä ungetc-funktiolla:

/* Tungetaan stdin-tiedostoon eli sinne, mistä käyttäjän syöte luetaan, "5" ja "\n", käänteisessä järjestyksessä */
ungetc('\n', stdin);
ungetc('5', stdin);

/* Nyt scanf:n pitäisi löytää sieltä 5 ja "enter" */

No juu. Tämä oli vain kummallinen idea, en itsekään keksi, miten siitä saisi toimivan tuossa koodissa. Varmaankin nuo threadit tulevat väkisin eteen, mutta ne eivät olekaan ihan helpoimpia.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta