Опитвам се да направя програма за преобразуване на 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