我试图制作一个程序,将char转换为小写或大写,具体取决于输入的内容。我不想使用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;
如果我忽略了警告并测试了我的程序,它会返回一个&#39;�&#39;从大写到小写,从小写到大写的空白字符。
我该如何解决这个问题?我感谢任何帮助!
答案 0 :(得分:1)
您需要实际拨打ConvertLowerToUpper
和ConvertUpperToLower
。现在,您正尝试将指向这些函数的指针分配给convertedChar
。
提示:当编译器抱怨“没有强制转换的东西”时,强制转换通常不是解决方案。