我正在为c学习一些在线课程,但结果却很奇怪。在下面的函数中,当我取消注释底部的printf语句时,将获得正确的答案。但是,当我在没有printf()的情况下运行函数时,会得到看似随机的结果。
我在另一个功能中打印出此结果。我收集到的信息可能与未使用垃圾值将数组定义为数组有关,但是接下来我将遍历并在循环中设置每个数组。
string ciphercalc(string text, string key)
{
int length = strlen(text);
char characters[length + 1];
characters[length + 1] = '\0';
for (int i = 0; i < 26; i++)
{
if (text[i] < 65 || (text[i] > 90 && text[i] < 97) || text[i] > 122 )
{
characters[i] = text[i];
}
else if (text[i] < 95)
{
if (key[i] < 95)
{
characters[i] = key[i];
}
else
{
characters[i] = key[i] - 32;
}
}
else
{
if (key[i] > 95)
{
characters[i] = key[i];
}
else
{
characters[i] = key[i] + 32;
}
}
}
string endchar = characters;
//printf("%s", endchar);
return endchar;
}
谁能指出我正确的方向?