Ohjelma pätkä:
double desimaali()
{
int num;
char merkki;
char puskuri[128];
printf ("Anna luku: ");
gets (puskuri);
sscanf (puskuri,"%d", &num);
printf ("Anna merkki:");
gets (puskuri);
sscanf (puskuri,"%c", &merkki);
printf ("Annoit luvun %d ja merkin %c", num, merkki);
getch();
}
Ongelma on se että kun ajan ohjelman "Anna luku:" eteen tulee aina luku 2009226388, vaikka en sitä kirjoitakkaan.
Eipä tähän vissiin vastausta löydy, mutta jos joku arvelee tietävänsä että missä vika voisi olla niin olen kiitollinen.
Bugi?
5
351
Vastaukset
No siis:
int num; -> olet varannut integer muuttujan johon olisi vissiin tarkotus tallentaa tämä käyttäjän antama luku.
a) Alusta aluksi muuttuja int num = 0;
Sitten haluat tallentaa käyttäjän syöttämän luvun integer muuttujaan num;
- printf("Annna luku: ");
- gets(num);
Kun et ole alustanut muuttujaa num;, etkä sinne mitään myöskään vie niin se näyttää jonkun luvun joka sattuu olemaan varatussa muistipaikassa.- Rookie
... tää pätkä toimii kyllä jos se on pääohjelmassa, mutta tässä aliohjelmassa "double desimaali()" se tekee sen jutun mitä edellisessä viestissä kirjoitin.
Rookie kirjoitti:
... tää pätkä toimii kyllä jos se on pääohjelmassa, mutta tässä aliohjelmassa "double desimaali()" se tekee sen jutun mitä edellisessä viestissä kirjoitin.
Sit on kyse muuttujien kuuluvuudesta, eli tee muuttujista globaaleja ja testaa.
- Rookie
bladi kirjoitti:
Sit on kyse muuttujien kuuluvuudesta, eli tee muuttujista globaaleja ja testaa.
Tein siitä muuttujasta globaalin ja alustin sen, mutta ohjelma jotenkin hyppää ton "Anna luku:" lauseen yli ja antaa num- muuttujalle arvon 0. Merkki muuttujalle pystyn syöttämään arvon.
printf ("Anna luku: ");
gets (puskuri);
sscanf (puskuri,"%lf", &num);
printf ("Anna merkki:");
gets (puskuri);
sscanf (puskuri,"%c", &merkki);
printf ("Annoit luvun %d ja merkin%c", num, merkki); - ...
bladi kirjoitti:
Sit on kyse muuttujien kuuluvuudesta, eli tee muuttujista globaaleja ja testaa.
Miksi ihmeessä muuttujista pitää tehdä globaaleja kun niitä ei käytetä mihinkään muuhun kuin funktion sisäiseen toimintaan??
Pari kysymystä kuitenkin:
- mitä pääohjelmassa tehdään ennen tuon funktion kutsua?
- miksi funktio on tyyppiä 'double' vaikka se ei palauta yhtään mitään?
Ketjusta on poistettu 0 sääntöjenvastaista viestiä.
Luetuimmat keskustelut
Riikan kukkaronnyöri on umpisolmussa
Kulutus ei lähde liikkeelle, koska kansalaiset eivät usko, että: – työpaikka säilyy – tulot eivät romahda – talous ei h52742Jos vedetään mutkat suoraksi?
Niin kumpaan ryhmään kuulut? A) Niihin, jotka menevät edellä ja tekevät? Vai B) Niihin, jotka kulkevat perässä ja ar1062571Tanskan malli perustuu korkeaan ansioturvaan
Ja vahvoihin työllisyys- ja kotoutumispalveluihin. Suomessa Riikka on leikannut juuri näitä: palkkatukea, työttömyysturv172291Vain vasemmistolaiset ovat aitoja suomalaisia
Esimerkiksi persut ovat ulkomaalaisen pääomasijoittajan edunvalvojia, eivät auta köyhiä suomalaisia.461874- 321453
Anteeksipyyntöni
Jätän tähän anteeksipyyntöni sinulle, koska en voi sanoa sitä missään muuallakaan. Pyydän anteeksi, jos purkamani tuska141443- 1771163
Sydämeni valtiaalle
En täältä aio asioita kysellä. Haluan tuoda tiedoksesi, että pohjimmiltani en ihmisiä tahdo satuttaa ja ajattelen muiden1011144Persu ajoi autoa
Ajoi lapsen yli https://www.iltalehti.fi/kotimaa/a/597a7468-3d1d-455e-bed2-21c1efc31ac1201053Oletko tyytyväinen
Tämän hetkiseen tilanteeseenne? Odotatko, että lähennytte vai yritätkö päästä yli ja eteenpäin?81948