шифрование — Цезарь Шифр, использующий символ *? Переполнение стека

Поэтому я пытаюсь использовать 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, Хорошо, но да, любая помощь будет принята с благодарностью, спасибо!

-3

Решение

Строковые литералы как "Hello" являются только для чтения. Если вы попытаетесь изменить такую ​​строку, у вас будет неопределенное поведение.

В C ++ строковые литералы на самом деле являются массивами постоянная персонажи.

С помощью char* чтобы получить доступ к строковому литералу, нужно, чтобы ваш компилятор выкрикнул предупреждение. Если нет, вам нужно увеличить уровень предупреждений или включить больше предупреждений.

Если вы действительно программируете на C ++, я предлагаю вам узнать о std::string а также найти хорошую книгу для начинающих читать.

6

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector