gpt4 book ai didi

C++ toUpper 实现

转载 作者:太空狗 更新时间:2023-10-29 23:52:13 25 4
gpt4 key购买 nike

我实现了 toUpper()。它并非 100% 有效。

代码:

char* toUpper(char* string)
{
char* sv = string;
while(*sv++ != '\0')
{
if( int(*sv) >= 97 || int(*sv) <= 122) //Only if it's a lower letter
*sv = char( *sv - 32);
}
return string;
}

我知道小写字母的数字是 97 到 122(ASCII 格式),大写字母的数字是 65 到 90。小写字母和大写字母之间正好有 32 个数字。所以我只是从较低的字符中减去 32。

调用此函数的代码:

char h[] = "Whats up?";
cout << toUpper(h) << endl;

我希望程序输出"WHATS UP?" 但我却得到了"WHATS"。我做错了什么?

最佳答案

if( int(*sv) >= 97 || int(*sv) <= 122)

应该是

if( int(*sv) >= 97 && int(*sv) <= 122)

或者,最好

if( *sv >= 'a' && *sv <= 'z')
*sv = *sv - ('a' - 'A');

您还需要移动增加 sv 的点。当前代码跳过检查 string

中的第一个字符
while(*sv != '\0')
{
if( *sv >= 'a' && *sv <= 'z')
*sv = *sv - ('a' - 'A');
sv++;
}

最后,我相信你已经知道了,但以防万一……如果这不是家庭作业或其他学习练习,标准 C toupper功能将为您完成完全相同的工作

*sv = (char)toupper(*sv);

关于C++ toUpper 实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16901339/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com