开发者

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"

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜