Поэтому я пытаюсь использовать Ceasar Cipher с char *
Я написал простую функцию, подобную этой:
char * Encrypt(char * s, int k)
{
char * c = s;
for(int i = 0; i < strlen(s); i++)
c[i] += k;
return c;
}
похоже, это должно работать, но это не так. Выдает ошибку при запуске программы.
Вот пример того, как я вызываю эту функцию:
int main()
{
cout << Encrypt("hello", 2) << endl;
system("pause");
return 0;
}
И прежде чем сказать «почему бы просто не использовать string
? «, хорошо ответ я пишу C ++ на определенном SDK, который вызывает ошибки компиляции при использовании string
, Хорошо, но да, любая помощь будет принята с благодарностью, спасибо!
Строковые литералы как "Hello"
являются только для чтения. Если вы попытаетесь изменить такую строку, у вас будет неопределенное поведение.
В C ++ строковые литералы на самом деле являются массивами постоянная персонажи.
С помощью char*
чтобы получить доступ к строковому литералу, нужно, чтобы ваш компилятор выкрикнул предупреждение. Если нет, вам нужно увеличить уровень предупреждений или включить больше предупреждений.
Если вы действительно программируете на C ++, я предлагаю вам узнать о std::string
а также найти хорошую книгу для начинающих читать.
Других решений пока нет …