Eli pyydän käyttäjää syöttämään desimaaliluvun jonka otan talteen muuttujaan, siis näin.
printf("Anna desimaaliluku:");
scanf("%f",&desimaali);
Tämän jälkeen pyydän käyttäjältä kokonaisluvun jonka edellisen tavoin otan talteen muuttujaan luku.
Seuraavaksi haluaisin käyttää muuttujaa luku desimaalien määrän määrityksessä, mutta en ole onnistunut.
Jotain seuraavanlaista tulostuslausetta olen koettanut.
printf("Antamasi desimaaliluku: %.%df",desimaali,luku );
Mutta saan tulosteeksi seuraavan:
Antamasi desimaaliluku: %df
Toivottavasti saitte sepustuksestani "kiinni". Onko idea edes mahdollinen?
Joudut muodostamaan printf
:n formaattimerkkijonon ajon aikana, esim sprintf
:llä:
#include <stdio.h> int main() { char s[100]; int n; float f = 0.123456789; printf("Desimaalit: "); scanf("%d", &n); sprintf(s, "%%.%df\n", n); printf(s, f); return 0; }
Ja sitten vaan tarkistuksia joka väliin...
Kiitoksia vinkistä.
Olen tässä C kielen opiskelussa todella alkumetreillä joten sitä vielä kysyisin että mitä tarkoitit tuolla "Ja sitten vaan tarkistuksia joka väliin..."
Ja miksi tuossa sprintf - lauseessa on yksi prosentti merkki "ylimääräisenä"?
sprintf(s, "%%.%df\n", n);
#include <stdio.h> int main(void) { int n = 0; float f = 0.123456789; printf("Desimaalit: "); scanf("%d", &n); printf("%.*f\n", n, f); return 0; }
Koska %-merkillä kuvataan korvattavia symboleita muotoilluissa tulosteissa (*printf
-funktiot), täytyy merkin itsensä saamiseksi laittaa niitä kaksi peräkkäin - tai ns. ylimääräinen kappale. Aiemmassa koodipätkässä sprintf-funktiolla luotiin merkkijono muotoa "%.nf\n"
, jossa n on kokonaisluku.
ok, kiitos :)
Aihe on jo aika vanha, joten et voi enää vastata siihen.