转换大小写和转换警告

Converting case and cast warnings

我正在尝试制作一个程序,根据输入内容将字符转换为小写或大写。我不想使用 ctype.h 的 toupper()tolower() 函数。

我的 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;

如果我忽略警告并测试我的程序,它 returns 一个从大写到小写的 '�',一个从小写到大写的空白字符。

我该如何解决这个问题?感谢您的帮助!

您需要实际调用 ConvertLowerToUpperConvertUpperToLower。现在您正试图将指向这些函数的指针分配给 convertedChar

提示:当编译器抱怨 'something without a cast' 时,转换通常不是解决方案。