Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C:n aloittaminen?

Sivun loppuun

juha127 [11.12.2005 21:12:53]

#

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++.

Metabolix [11.12.2005 21:14:46]

#

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.

Karza [11.12.2005 22:15:24]

#

return 0; eteen muutama cin.get();.
Onnistuu ainakin C++:lla.

hunajavohveli [11.12.2005 23:01:30]

#

Kun C:stä on kyse, niin mitään cinejä ei ole käytössä.

Metabolix [11.12.2005 23:04:02]

#

Ja C:ssä vastaava purkka on getchar(); eli uloskirjoitettuna fgetc(stdin);

Karza [11.12.2005 23:43:01]

#

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.

Metabolix [12.12.2005 00:35:28]

#

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;
}

phadej [17.12.2005 03:29:17]

#

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.

tejeez [17.12.2005 07:38:29]

#

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

Metabolix [17.12.2005 11:30:32]

#

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.


Sivun alkuun

Vastaus

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

Tietoa sivustosta