【发布时间】:2020-11-14 20:45:28
【问题描述】:
我正在编写一个程序,将字符串中的所有小写字母转换为大写字母,反之亦然。 但是,我发现我的程序无法返回整个转换后的字符串。
这是结果和我的程序代码。
输入:“a Survey”,输出:“A”。
输入:“Hello”,输出:“hELLO”。
#include <iostream>
#include <cstring>
using namespace std;
int main() {
char inWord[50], outWord[50];
int j = 0;
cin.getline(inWord, 50);
for (j = 0; j < strlen(inWord); j++)
{
//upper to lower
if (inWord[j]>='A'&&inWord[j]<='Z')
outWord[j] = inWord[j] + 'a' - 'A';
//lower to upper
else
outWord[j] = inWord[j] + 'A' - 'a';
}
cout << outWord;
return 0;
}
【问题讨论】:
-
' '不在'A'-'Z'范围内,而且很危险,它是'a' - 'A'。 -
不要混淆“从函数返回”和“打印到控制台”,这里的意思很明显,但总的来说,这两者是完全不同且不相关的
-
请使用
std::string以避免出现一堆问题。 -
outword[j] 如果 inword 不在 [a-zA-Z] 范围内,则未设置 (0)。空格会导致该字符的默认 0 值保持不变,即空终止符表示已到达字符串的末尾。
-
除了上述问题
outWord不是nul终止,这是C字符串的要求。
标签: c++