Ajattelin kokeilla millaista on ohjelmoida C kielellä. Ensimmäinen ongelma onkin tekstin tulostus. Lähdin liikkeelle ohjelmointiputkan oppaalla ja kokeilin siellä ohjeessa olevaa tulos scriptiä. Ongelmana on miten saan tekstin jäämään näkyviin ruudulle? Käyttis on XP Home ja kääntäjä jota käytän on Dev-C++.
Hakua saa käyttää, ja sillä yleensä löytyy linkki tänne: http://pp.kpnet.fi/blaze/codefaq/#justflashes
Näköjään tuo on Googlessakin neljäntenä hakusanoilla Liian usein.
return 0; eteen muutama cin.get();.
Onnistuu ainakin C++:lla.
Kun C:stä on kyse, niin mitään cinejä ei ole käytössä.
Ja C:ssä vastaava purkka on getchar();
eli uloskirjoitettuna fgetc(stdin);
Mikäs purkka se nyt on? Ei ole paljoa vaihtoehtoja. Itse käytän -aina- sitä. heti kun aloitan, niin viskaan heti ne muutamat sinne loppuun.
No se on purkka, kun vaihtoehtoja on, ja komentorivikäyttäjille tuo siitä on vain turhaa riesaa. Tuollainen konsoliohjelma kuuluisi siis tosiaan ajaa komentoriviltä, tai sitten siitä pitää tehdä kauniisti looppaava:
int main(void) { bool Loopataan; char Merkki; while (Loopataan) { // Blah blah... printf("Lopetetaanko? (Anna K, jos lopetetaan.)\n"); scanf("%c", &Merkki); if (Merkki == 'k' || Merkki == 'K') Loopataan = false; } return 0; }
bool ja false on c++ juttuja. tarkkana!
Mutta joo. Tälläset cin.get() / getchar(); jutut on ruminta purkkaa. Konsoliohjelma ei sais olettaa, että stdin:issa / cin:ssa on konsoli-inputti eikä esim joku tiedosto. Siis ainoa oikea tapa on ajaa ne konsolissa.
winXP:ssa Start->Run ja cmd
Konsoliohjelmat ajetaan konsolissa. Kokeilkaa vaikka winxp:n ipconfig -ohjelmaa. Välähtää vaan, vaikka tieto onkin tarkoitettu luettavaksi.
Metabolix kirjoitti:
No se on purkka, kun vaihtoehtoja on, ja komentorivikäyttäjille tuo siitä on vain turhaa riesaa. Tuollainen konsoliohjelma kuuluisi siis tosiaan ajaa komentoriviltä, tai sitten siitä pitää tehdä kauniisti looppaava:
int main(void) { bool Loopataan; char Merkki; while (Loopataan) { // Blah blah... printf("Lopetetaanko? (Anna K, jos lopetetaan.)\n"); scanf("%c", &Merkki); if (Merkki == 'k' || Merkki == 'K') Loopataan = false; } return 0; }
Miks tossa scanf mutta sun aiemmassa esimerkissä getchar? :o
tejeez: Tärkeimpänä sellainen pointti, joka ei tuossa nyt näy (pääsi unohtumaan), että kun %c:tä ennen laittaa välin, se hyppää tyhjien yli seuraavaan oikeaan merkkiin asti. Ja lisäksi siinä on sellainen ajatuksellinen ero, että perusohjelmaa tehdessä on tottunut käyttämään scanf:ää, jos oikeasti halutaan lukea syöte. Voisihan siinä aivan hyvin käyttää getchariakin, jos ei ws-skippausta kaipaa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.