Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Enterit kiusana

jormi [17.07.2008 11:05:09]

#

Kääntäjäni on lcc-win32. Kotisivullani ohjelmassa
http://pp.kpnet.fi/jvm/jvm/pallokolmio.htm
on funktiossa Haetunnetut() alkeellinen tapa syödä ylimääräinen enter pois (merkki = getchar();). Jouduin käyttämään samaa temppua ennen gets() funktiota, koska jostain oli jäänyt ylimääräinen enter puskuriin ja se aiheutti gets() funktion ohituksen. Teenkö jotain väärin, vai onko parempia tapoja enterien pitäiseksi kurissa ? JVM.

Metabolix [17.07.2008 11:54:21]

#

Tietenkin ne jäävät puskuriin, jos niitä ei kukaan sieltä lue pois. Puskurista voit poistaa merkit seuraavaan rivinvaihtoon asti näin:

scanf("%*[^\n]");

Seuraavat rivinvaihdot taas saa pois käänteisellä merkkiehdolla:

scanf("%*[\n]");

Näiden jälkeen edessä on siis seuraavan tekstiä sisältävän rivin alku. Näitä kannattaa tietenkin kutsua vasta juuri ennen seuraavaa lukemista, jottei ohjelma jää odottelemaan sitä seuraavaa riviä.

jormi [17.07.2008 15:41:56]

#

Kokeilin jälkimmäistä lausetta. Kääntäjäni hyväksyi sen ja se tehosi. Hakasulut scanf funktiossa on jäänyt näköjään minulta opiskelematta. JVM

jormi [18.07.2008 08:51:35]

#

En löytänyt netistä sellaista hyvää ohjetta scanf funktion muotoilusta, josta olisin saanut lisää tietoa mm hakasulkujen käytöstä. Satandardiohjeita löytyi kyllä runsaasti. JVM

Metabolix [18.07.2008 09:08:27]

#

Kyseessä on scanset, ja siitä kyllä kerrotaan kaikissa scanf:n muotoiluista kattavasti kertovissa lähteissä (jotka on usein kopioitu suurelta osin suoraan standardista). Google löytää esimerkiksi tällaisen lähteen.

jormi [18.07.2008 09:37:12]

#

Selvitys hakasulkuihin löytyi, ja paljon muutakin tutkimisen arvoista, Kiitos. JVM

Vastaus

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

Tietoa sivustosta