Я пишу очень простую программу на C для базового курса, и я получаю EXC_BAD_ACCESS
в строке 14. Я не понимаю, в чем проблема.
Программа запрашивает у пользователя число, а затем отображает связанный с ним символ ASCII.
Это происходит, AFAIK, только при отладке моей программы с помощью lldb
. Он отлично работает при запуске из командной строки или на onlinegdb.com .
Кроме того, если я закомментирую строку 13 и назначу true
или false
на loop_ctrl
вместо возвращаемого значения UserWantsToExit
, все будет работать как ожидалось.
#include <stdio.h>
#include <stdbool.h>
void GetAndDisplayInput(void);
bool UserWantsToExit(void);
int main()
{
bool loop_ctrl = true;
while (loop_ctrl)
{
GetAndDisplayInput();
loop_ctrl = !UserWantsToExit(); /* EXC_BAD_ACCESS */
}
return 0;
}
void GetAndDisplayInput()
{
char input_char = '0';
printf("\nInput a number: ");
scanf("%i", &input_char);
getc(stdin); /* Gets rid of '\n' */
printf("\n\nIt's character '%c'!\n\n", input_char);
}
bool UserWantsToExit()
{
char choice = '0';
bool value = false;
printf("\nDo you want to exit? (Y/N): ");
scanf("%c", &choice);
getc(stdin); /* Gets rid of '\n' */
value = (choice == 'y' || choice == 'Y');
return value;
}