Согласно комментариям, проблема, вероятно, заключалась в неправильном использовании strcmp
:
char *string = "fish";
char not_a_string = 'f';
if (0 == strcmp( not_a_string, string ))
...
Символ 'f'
имеет значение ASCII 0x66. strcmp
будет слепо использовать это как указатель (ожидая, что он укажет на допустимую строку), что вызовет cra sh при доступе к не вашей памяти ( ошибка сегментации ).
В этом случае вам не помешает strcmp( ¬_a_string, string )
, но это удача, а не правильный код.
Чтобы сравнить вводимые пользователем символы с другим символом, вы можете просто использовать прямое равенство (так как оба они на самом деле целые):
if ( user_inp == 'c' ) ...
Итак, это ваш код исправлен, но как вы вообще смогли его запустить? Для меня G CC сразу же пожаловался:
In function 'int binarysearch()': so.cpp:17:29: error: invalid conversion from 'char' to 'const char*' [-fpermissive]
if (strcmp(user_inp, "c") == 0){
и не дал вывода. Это говорит вам то же самое, что я только что сделал (хотя и немного более загадочно).
Уроки, которые нужно выучить: выслушать жалобы вашего компилятора (и сделать ваш компилятор как можно более жалобным)
@pmg также отметил:
добавить пробел перед спецификатором преобразования: scanf(" %c", &user_inp)
Без него при каждом нажатии Enter:
Sorry, I did not understand your input.Is your secret number 25?
ie Вы получаете ложную жалобу. Но с пробелом все работает как надо.
(я ненавижу scanf
, поэтому понятия не имею, почему это работает;))