Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: C-ohjelma ei näy

Sivun loppuun

Wire [17.04.2013 21:27:24]

#

Tein ohjeiden mukaan C-kielikoodin koodin ja ajoin sen,mutta se ei näyttäytynytkään monitorissa tai ikkunassa?

Ripe [17.04.2013 21:30:49]

#

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();

Metabolix [17.04.2013 21:40:45]

#

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

Ripe [17.04.2013 21:57:12]

#

Metabolix kirjoitti:

Ripen edellä antama koodi ei useissa tapauksissa toimi, - -

No, ainakin omina alkuaikoinani ehdottamani ratkaisu toimi vallan mainiosti.

Metabolix [17.04.2013 22:10:17]

#

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.

Grez [18.04.2013 09:58:27]

#

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.

User137 [18.04.2013 17:12:29]

#

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.

Wire [21.04.2013 03:46:11]

#

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.


Sivun alkuun

Vastaus

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

Tietoa sivustosta