Я пытаюсь создать программу для преобразования char в нижний или верхний регистр, в зависимости от того, что вводится. Я не хочу использовать функции toupper()
и tolower()
ctype.h.
Моя функция ConvertCase
выглядит так:
char ConvertCase(char input) {
char convertedChar = 0;
if (('a' <= input) && (input <= 'z')) {
convertedChar = (char)ConvertLowerToUpper;
}
else if (('A' <= input) && (input <= 'Z')) {
convertedChar = (char)ConvertUpperToLower;
}
else {
return input;
}
return convertedChar;
}
и два моих реальных конвертера выглядят так:
char ConvertLowerToUpper(char input) {
return input - 32;
}
с добавлением вместо вычитания для верхнего к нижнему.
Когда я компилирую, я получаю два предупреждения,
cast from pointer to integer of different size [-Wpointer-to-int-cast]
convertedChar = (char)ConvertLowerToUpper;
По одному на каждый бросок. И я не очень понимаю, что это значит. Если я опускаю приведения, я получаю
assignment makes integer from pointer without a cast [-Wint-conversion]
convertedChar = ConvertUpperToLower;
Если я проигнорирую предупреждения и протестирую свою программу, она вернет символ «�» из верхнего регистра в нижний, пробел из нижнего регистра в верхний.
Как мне это исправить? Я ценю любую помощь!
ConvertLowerToUpper
иConvertUpperToLower
. Прямо сейчас вы пытаетесь присвоить указатели на эти функцииconvertedChar
. Подсказка: когда компилятор жалуется на «что-то без приведения», приведение обычно не является решением. - person Kninnug   schedule 10.10.2015ConvertLowerToUpper(input)
вместоConvertLowerToUpper
- person Elrond_EGLDer   schedule 10.10.2015