Tein ohjeiden mukaan C-kielikoodin koodin ja ajoin sen,mutta se ei näyttäytynytkään monitorissa tai ikkunassa?
Vilahtiko ruudulla komentorivi? Jos vastaus on kyllä, niin silloin lisää ohjelman loppuun seuraava koodipätkä, joka odottaa, että sille syötetään jotain ja painetaan enteriä, ja sitten ohjelma sulkeutuu.
char loppu = ''; loppu = getchar();
Asiaa on selitetty C++-oppaassa, jossa on myös kerrottu paras ratkaisu: suorita ohjelma erillisessä komentorivi-ikkunassa. Oppaassa on myös C++-kielinen koodiratkaisu, tämän viestin lopussa on sama C-kielellä tehtynä.
Ripen edellä antama koodi ei useissa tapauksissa toimi, koska getchar palauttaakin ohjelmalle viimeksi syötetyn tekstin perässä olleen enterin, jota ei vielä ole luettu. Seuraava koodi sen sijaan toimii useammin:
printf("Kirjoita vielä jotain: "); scanf(" ");
Vielä varmempi on tämä C++-oppaan koodia vastaava tapa:
printf("Paina Control-D, Control-Z tai Control-C!\n"); while (!ferror(stdin) && !feof(stdin)) { getchar(); }
Metabolix kirjoitti:
Ripen edellä antama koodi ei useissa tapauksissa toimi, - -
No, ainakin omina alkuaikoinani ehdottamani ratkaisu toimi vallan mainiosti.
Ripe kirjoitti:
Metabolix kirjoitti:
Ripen edellä antama koodi ei useissa tapauksissa toimi, - -
No, ainakin omina alkuaikoinani ehdottamani ratkaisu toimi vallan mainiosti.
No, kokeilepa vaikka tätä ihan tavallista ohjelmaa:
#include <stdio.h> int main(void) { char nimi[100] = {0}; printf("Mikä on nimesi?\n"); scanf("%99[^\r\n]", nimi); /* Laita %s, jos et ymmärrä tätä. */ printf("Hei, %s!\n", nimi); getchar(); return 0; }
Kuten näet, getchar ei pysäytä ohjelmaa hetkeksikään, koska se lukee heti edellisen rivin rivinvaihtomerkin ("enterin"). Turha väittää, että tuo olisi alkuaikoinasi toiminut yhtään paremmin kuin nytkään.
Lisäksi sinun versiossasi on ihan turha muuttuja.
Mielestäni olisi järkevämpää opetella käyttämään kehitysympäristöä kuin tehdä tuollaisia pysäytysvirityksiä itse ohjelmaan.
En usko ko. asian olevan mikään ongelma jos työskentelee komentoriviltä käsin, eli koko ongelma luultavasti koskee graafisia IDEjä.
Itse käytän pääasiassa Visual Studiota ja siinä jos ajaa komentoriviohjelman ilman debuggia, niin oletusasetuksilla se ei sulje ikkunaa suoraan. Debug-tilassa taas itse laittaisin breakpointin mainista poistumiseen. Voisin kuvitella että muissakin IDEissä on ihan vastaavat mahdollisuudet.
Tai toinen tapa on käynnistää komentokehote itse, ja käynnistää sovellus komennolla sieltä. Tällä tavalla ei voi tosin debugata. Siitä puheenollen ohjelman loppuun voi lisätä breakpointin, mutta kömpelöitä ratkaisuja molemmat. Parempi vaan tutustua IDE:n saloihin.
Metabolix kirjoitti:
Oppaassa on myös C++-kielinen koodiratkaisu, tämän viestin lopussa on sama C-kielellä tehtynä.
Hei, koodi toimi.Sain ikkunassa vastauksen C-ohjelmointi on kivaa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.