Я не в среде, которую я могу проверить, но я вижу несколько вещей. Во-первых, ваш тест printf не печатает, потому что if не имеет символа новой строки. Если вы не собираетесь вставлять один, позвоните fflush. * 1001 например *
printf("test");
fflush(stdout);
Во-вторых, использование scanf
для чтения по номеру телефона показывает небольшое недопонимание того, как scanf
будет рассматривать ввод как целое число. Для этого вам не нужен массив из 7 дюймов, потому что вы просто указали, что ввод не должен содержать никаких дополнительных символов. Таким образом, телефонный номер, такой как 345-6789, вводится как 3456789
, который будет читаться как одно целое число, то есть 3 миллиона четыреста 56 тысяч семьсот 89. Это будет читаться как одно целое число. Я знаю, что вы хотите рассматривать их как отдельные числа, но scanf
будет рассматривать их как 1 число, если они не разделены пробелами. Для чтения в один int этого будет достаточно:
...
int phoneNumber;
scanf("%d", &phoneNumber); // <--- notice the & operator
EDIT
Я читал справочную страницу для scanf()
, и когда используется спецификатор %s
, он должен вставить нулевой символ в строку. Таким образом, деталь, направленная на проверку возврата и обеспечение размещения символа '\0'
, неприменима.
РЕДАКТИРОВАТЬ 2
У меня был момент этим утром, и я должен был понять это. Я думаю, что у меня это есть. Что-то в функции findWords()
выглядело немного подозрительно, и компиляция, сбой сегмента, и просмотр файла ядра показали, что это так. Именно эта строка в этой функции
for(i = 0; i < strlen(letters[userNum[digit]]); i++)
В частности, это вызов strlen()
с результатом использования userNum[]
для индексации в letters[]
. Как я и другие указали, scanf()
не будет читать «номер телефона», такой как 3456789
(ввод как таковой) в 7 различных целочисленных значениях. Он читается как единственное целое и будет читаться в userNum[0]
(и угадайте, что? digit = 0
, когда произойдет ошибка). Это неудивительно, массив letters
не содержит 3 миллиона 4ста 56 тысяч 7сот 89 единиц . (Предполагая, что введенное число - то, что я написал.)
Как упоминал Ясен (я думаю), целые числа не очень хорошо работают для телефонных номеров. По крайней мере, вам придется разработать другой способ разделения телефонного номера для использования в качестве индекса.