Я работаю над шифром Цезаря на CS50 2-й неделе. Обычно я писал большую часть кода, но последнее сообщение об ошибке, которое я не отлаживал, было инициализацией строки в конце. Как вы инициализируете строку так, чтобы сообщение об ошибке исчезло, и мы достигли нашей цели?
Моя функция показана ниже:
//Ciphering Function
string plainToCipher(string plainText,int key)
{
int i = strlen(plainText);
string cipher;
int j = 0;
do
{
if(plainText[j] >= 'a' && plainText[j] <= 'z')
{
cipher[j] = ((plainText[j] - 'a') + key) % 26 + 'a';
}
else if(plainText[j] >= 'A' && plainText[j] <= 'Z')
{
cipher[j] = ((plainText[j] - 'A') + key) % 26 + 'A';
}
}while(j<i);
return cipher;
}
Я получил это сообщение об ошибке:
caesar.c:71:17: error: variable 'cipher' is uninitialized when used here
[-Werror,-Wuninitialized]
cipher[j] = ((plainText[j] - 'a') + key) % 26 + 'a';
^~~~~~
caesar.c:64:18: note: initialize the variable 'cipher' to silence this
warning
string cipher;
^
= NULL