Поскольку string
- это typedef
для char*
, ciphertext
- это массив char
указателей. Следовательно, присвоение char
, когда ожидается указатель, приведет к плохим результатам.
Вы действительно не хотите, чтобы ciphertext
был массивом string
s. Вы хотите, чтобы это была другая строка того же размера, что и plaintext
. Вы можете сделать это с помощью
string ciphertext=malloc(strlen(plaintext)+1); // The +1 is for the null-terminator.
Кроме того, я бы вычислил strlen(plaintext)
один раз внутри дважды. До
n=strlen(plaintext);
string ciphertext=malloc(n+1);