【发布时间】:2015-10-10 20:00:48
【问题描述】:
我正在尝试制作一个程序来将 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;
每个演员一个。而且我真的不明白这是什么意思。如果我省略演员表,我会得到 p>
assignment makes integer from pointer without a cast [-Wint-conversion]
convertedChar = ConvertUpperToLower;
如果我忽略警告并测试我的程序,它会返回一个从大写到小写的“�”,一个从小写到大写的空白字符。
我该如何解决这个问题?感谢您的帮助!
【问题讨论】:
-
您需要实际调用
ConvertLowerToUpper和ConvertUpperToLower。现在您正尝试将指向这些函数的指针分配给convertedChar。提示:当编译器抱怨“没有强制转换的东西”时,强制转换通常不是解决方案。 -
ConvertLowerToUpper(input)而不是ConvertLowerToUpper -
呸。谢谢@helpYou 和Kninnug,我不知道为什么我没有意识到这一点!问题解决了!有没有办法将评论标记为答案?
-
@Dradee 不,没有,这就是人们需要停止在 cmets 中发布答案的原因!
-
没有。 @Kninnug,您可以将其发布为答案吗?
标签: c casting uppercase lowercase