Предупреждения за преобразуване на главни и главни букви

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

Ако пренебрегна предупрежденията и тествам програмата си, тя връща '�' от главни към малки букви, празен знак от малки към главни букви.

Как бих поправил това? Оценявам всяка помощ!


person jmkjaer    schedule 10.10.2015    source източник
comment
Всъщност трябва да се обадите на ConvertLowerToUpper и ConvertUpperToLower. В момента се опитвате да присвоите указателите към тези функции на convertedChar. Подсказка: когато компилаторът се оплаква от „нещо без преобразуване“, преобразуването обикновено не е решението.   -  person Kninnug    schedule 10.10.2015
comment
ConvertLowerToUpper(input) вместо ConvertLowerToUpper   -  person Elrond_EGLDer    schedule 10.10.2015
comment
Гех. Благодаря ви, @helpYou и Kninnug, не знам защо не разбрах това! Проблема решен! Има ли начин да маркирате коментар като отговор?   -  person jmkjaer    schedule 10.10.2015
comment
@Dradee Не, няма, поради което хората трябва да спрат да публикуват отговори в коментари!   -  person Steven Hansen    schedule 10.10.2015
comment
Не. @Kninnug, можеш ли да го публикуваш като отговор?   -  person Elrond_EGLDer    schedule 10.10.2015
comment
Когато проблемът и решението са толкова тривиални, просто отговарям в коментар, така че всеки да може да продължи напред. Но и сега е в отговор.   -  person Kninnug    schedule 10.10.2015


Отговори (1)


Всъщност трябва да се обадите на ConvertLowerToUpper и ConvertUpperToLower. В момента се опитвате да присвоите указателите към тези функции на convertedChar.

Подсказка: когато компилаторът се оплаква от „нещо без преобразуване“, преобразуването обикновено не е решението.

person Kninnug    schedule 10.10.2015