111

Ali Çehreli via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Fri Feb 19 19:43:17 PST 2016


On 02/19/2016 07:37 PM, Lisa wrote:

 > import std.stdio;
 > import std.math;
 >
 > int main()
 > {
 >      double a, b, c, p;
 >
 >      writef("Enter a: ");
 >      scanf("%d", &a);

scanf is not a safe function. It trusts the format string and assumes 
that 'a' really is what the programmer told it. (For example, although 
'a' is not an 'int, %d means 'int' and scanf treats it as such.)

The correct format identifier for double is %lf. You need to replace all 
three of with %lf.

However, you are not writing idiomatic D code. I recommend dropping C 
functions altogether an taking advantage of readf():

   http://ddili.org/ders/d.en/input.html

Ali



More information about the Digitalmars-d-learn mailing list