какой-либо способ “проверить с помощью ping-запросов” номер телефона?

Ваш вопрос о неинициализированных переменных хорошо освещен в комментариях и других ответах; Этот ответ для вашего второго вопроса, о неожиданном выводе из getAverage().

Вы определяете balance как массив double, но getAverage() ожидает массив int. Когда я изменяю:

double getAverage(int arr[], int size) { ... }

на:

double getAverage(double arr[], int size) { ... }

, я получаю ожидаемый результат: 215.2. Неявное преобразование типов [1] в вашем исходном коде вызывает неожиданное поведение.

Кроме того, я не знаю, какой компилятор вы используете, но когда я скомпилировал ваш оригинальный код [2], gcc выдал это предупреждение:

warning: incompatible pointer types passing 'double [5]' to parameter of type 'int *'

... который мертв поддавайся тому, что назревает проблема. Если ваш компилятор не генерирует это предупреждение, или если у вас есть предупреждения, которые подавлены, или если они записаны в файл или что-то, что вы не просматриваете, я рекомендую снова сделать их видимыми; уделение внимания предупреждениям компилятора спасло меня от неисчислимых часов горя.

[1] «преобразование типов», возможно, не лучший термин здесь; преобразование типов обычно не вызывает затруднений, хотя есть некоторые ошибки; здесь происходит то, что байты, составляющие значение double, читаются как int, и структура байтов этих двух типов данных очень различна; вот почему при выводе вашего исходного кода создается впечатление, что он имеет дело с такими сумасшедшими большими числами: например, байты, используемые для представления «17» в виде двойного числа, когда читается как int, становятся очень, очень разными числами. Хуже того, проходя через байты, составляющие массив значений double, как если бы это был массив значений int, он, вероятно, даже не смотрит на элементы массива на соответствующих границах элементов. Короче говоря, несоответствие типов вызывает хаос.

[2] Под «исходным кодом» я подразумеваю ваш код с достаточным количеством служебного кода для его компиляции, например, include прагмы и тело main(); Я в целом согласен с другими комментариями о предоставлении полного, минимального примера.

5
задан Kara 3 September 2014 в 16:42
поделиться

4 ответа

Вам нужно будет обратиться к третьей стороне. Я успешно использовал данные Melissa для проверки адреса, они также предлагают подтверждение по телефону, но я не использовал их

http://www.melissadata.com/listservices/resphoneverify.htm

Если получаю 100% правильный номер телефона имеет решающее значение, я бы посмотрел на службу, которая действительно позвонила бы по номеру, предоставила бы проверочный код и заставила бы пользователя подтвердить этот код на сайте. Это PIA с точки зрения пользователей, но это наиболее полный путь, который вы можете выбрать. Быстрый поиск в Google привел к появлению этого сайта http://www.phoneconfirm.com , который, кажется, делает то, что я упоминал. Я уверен, что есть и другие.

Если вы не можете / не хотите обращаться к третьей стороне, я не могу представить, чтобы написать что-то подобное самому было бы невозможно.

4
ответ дан 14 December 2019 в 13:45
поделиться

всегда можно было использовать с хорошим старым военным дозвонщиком

1
ответ дан 14 December 2019 в 13:45
поделиться

Однажды я сделал что-то подобное. Ага, для телемаркетеров. И да, это тревожит мою совесть по сей день.

Он был основан на модуле app_amd.c (Обнаружение автоответчика), который был сторонней надстройкой для Asterisk и, как ни странно, можно найти в их основном дереве сейчас. С помощью E1 / T1 вы также можете различать плохие номера, занятость и многие другие коды состояния. Посмотрите это, это может помочь.

0
ответ дан 14 December 2019 в 13:45
поделиться

Я считаю, что система CTI, использующая службу вызовов ISDN, может быстро вернуть код состояния, указывающий, что номер действителен / недействителен перед пунктом назначения начинает звонить.

Один из поставщиков - Katalina systems, их продукт называется VoiceGuide, и у них есть модуль дозвона, который может дать вам то, что вы хотите. см. www.voiceguide.com.

Просто экспортируйте список звонков в номеронабиратель (файл csv) и просмотрите статус звонка после обработки.

Если список очень большой, это может оправдать покупку системы для этого. Скорость звонка зависит от количества установленных / доступных линий. Вам могут потребоваться некоторые пользовательские изменения, чтобы прервать вызов после получения статуса. Каталина должна быть в состоянии помочь. Я не уверен, могут ли соединительные линии VoIP предоставить вам полный доступ к статусу линии.

1
ответ дан 14 December 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: