При декодировании сообщения из аскии кода, первый символ выводится корректно, а остальные нет
Задание: закодировать и раскодировать текст через аскии со сдвигом. Кодировка происходит верно,но вот декодирование работает только с первым символом, в чем моя ошибка?
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int coder(char* code,int x,int code_base) {
int *num = new int[x+1];
for (int i = 0; i < x; i++) {
num[i] = (int)code[i] + code_base;
}
num[x] = -1;
cout << "Закодированное сообщение: ";
for (int i = 0; i < x+1; i++) cout << num[i] << " ";
cout << endl;
return(*num);
}
void decoder(int* code,int code_base,int x){
char *decode = new char[x+1];
memset(decode, 0, sizeof(decode));
for (int i = 0; i < x; i++) {
decode[i] = char(code[i]-code_base);
}
decode[x] = -1;
cout << "Декодированное сообщение: ";
cout << decode;
}
int main() {
int code_base;
cout << "Введите сдвиг шифрования: ";
cin >> code_base;
char code[] = "will see it";
int x = strlen(code);
int *num = new int[x+1];
*num = coder(code,x,code_base);
decoder(num,code_base,x);
}
Источник: Stack Overflow на русском