15,174,613 members
See more:
I want to read 10 digit mobile number in c language. I used long int and long long int and double int also but I didn't get answer.

What I have tried:

long int a ;
scanf("%ld",&a);
printf("%ld",a);
But I got some number which is not equal to entered number.

I also take data type as long int and long double but it generate wrong output.
Posted
Updated 1-Dec-19 22:21pm

## Solution 1

Quote:
I also take data type as long int and long double but it generate wrong output.

Never ever input a phone number as numeric because of the 0 in first position.
Use a string of char array, just like with letters.

[Update]
Quote:
But why? Is there any reason?

Because a phone number usually start with a '0' and international phone numbers start with a '+'. It is mainly made of digits, but not only, and it don't respect the rules of a number.
v2
An@mik@ 31-Jul-19 13:13pm

But why? Is there any reason?

Because the first digit can be zero, which would be lopped off when stored as a numeric type.

## Solution 2

A "mobile number" is not a "number" in the normal sense: you cannot do arithmetic with it.
What is twice my mobile number? What do you get if you add your mobile number and mine? There is no answer because the results are useless: they aren't "mobile numbers" any more.

All you can do with a mobile number is store it and retrieve it - so it's a string and should be stored as such.
In fact, it's pretty much compulsory: using a numeric field to store it will lose vital information such as the leading zero, or two leading zeros which can indicate a number in a different country: 0044 indicates the UK for example. You'll also sometimes find it entered as a +44 prefix which can't be stored in a numeric field either. When it comes to land lines as well ... it gets worse! Brackets are allowed: "+44 (0) 1234 56789" where the 0 is only reg=quired if the +44 part is not used, spaces are allowed to separate area codes from in-area numbers: "01234 46789" and so on. And some people use keypad lettering: "44-HOWS MY DRIVING" being "44-4697-69-3748464" (which if it's a real number, I'm sorry!)

So for phones, always use a string!