An@mik@ Ответов: 2

Как принять 10-значный мобильный номер в C


Я хочу прочитать 10-значный номер мобильного телефона на языке Си. Я использовал long int и long long int, а также double int, но ответа не получил.

Что я уже пробовал:

long int a ;
scanf ("%ld",&a);
printf("%ld",a);
Но я получил некоторое число, которое не равно введенному числу.

Я также беру тип данных как long int и long double, но он генерирует неправильный вывод.

2 Ответов

Рейтинг:
6

OriginalGriff

"Мобильный номер" - это не "номер" в обычном смысле слова: с ним нельзя делать арифметику.
Что такое удвоенный номер моего мобильного телефона? Что вы получите, если добавите свой номер мобильного телефона и мой? Ответа нет, потому что результаты бесполезны: они больше не являются "мобильными номерами".

Все, что вы можете сделать с номером мобильного телефона, это сохранить его и получить - так что это строка, и ее следует хранить как таковую.
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!)

Так что для телефонов всегда используйте строку!


Рейтинг:
18

Patrice T

Цитата:
Я также беру тип данных как long int и long double, но он генерирует неправильный вывод.

Никогда не вводите номер телефона как числовой из-за 0 в первой позиции.
Используйте строку массива символов, как и в случае с буквами.

[Обновление]
Цитата:
Но почему? Есть ли какая-то причина?

Потому что телефонный номер обычно начинается с "0", а международные телефонные номера начинаются с"+". Он в основном состоит из цифр, но не только, и он не соблюдает правила числа.


An@mik@

Но почему? Есть ли какая-то причина?

MadMyche

Потому что первая цифра может быть нулевой, которая будет отсечена при хранении в виде числового типа.