Следующий метод приводит к ошибке:Облицовочные ошибки сегментации при использовании ToUpper()
BOOL should_begin(void) {
char yn;
do {
printf("Continue? [Y/N] ");
yn = getchar();
printf("\n");
yn = toupper(yn);
if (yn == 'N') {
return FALSE;
}
} while (yn != 'Y');
return TRUE;
}
Код выполняется до тех пор, как правило, toupper()
не будет достигнут, и в этот момент происходит сбой сегментации. Я видел такие вопросы, как toupper()
был вызван на часть строки, но это было только тогда, когда кто-то пытался изменить литерал.
Так что же дает? char yn
не следует читать только, верно? Это всего лишь char
, один байт данных, я не читаю целую строку, не так ли?
EDIT:
Это моя main()
функция.
int main(int argc, char* argv[]) {
/* just some printf()s with instructions */
if (!should_begin()) {
return 0;
}
/* then continue with rest of the program */
return 0;
}
Это в значительной степени полный код. Ничего другого, кроме некоторых # include и # define. –
Надеюсь, вы не пропустили '#include', не так ли? –
No. Я включил. –