To read an int using scanf we use:
scanf("%d",&i);
What if i
is long not int??
Note: when using %d
with long
it gives me an irritating warning..
Thanks!
To read an int using scanf we use:
scanf("%d",&i);
What if i
is long not int??
Note: when using %d
with long
it gives me an irritating warning..
Thanks!
Just use
long l;
scanf("%ld", &l);
it gives me an irritating warning..
That warning is quite right. This is begging for stack corruption.
For gods sake:
long n;
scanf( "%ld", & n );
scanf("%ld", &i);
You can also use "%Ld"
for a long long
(and depending on your compiler, sometimes also "%lld"
).
Take a look at the Conversions section of the scanf man page for more. (Just Google it if your system doesn't have manpages).
Each conversion specifier expects its corresponding argument to be of a specific type; if the argument's type does not match the expected type, then the behavior is undefined. If you want to read into a long with scanf()
, you need to use the %ld
conversion specifier:
long i;
scanf("%ld", &i);
Check the online draft C standard (.pdf file), section 7.19.6.2, paragraph 11 for a complete listing of size modifiers and expected types.
Check this, here is the answer: "%I64d"