Reading long int using scanf
To read an int
using scanf we use:
scanf("%d", &i);
What if i
is a long
not int
??
开发者_Python百科Note: when using %d
with long
it gives me an irritating warning..
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"
精彩评论