Предположительно вам необходимо преобразовать вашу строку в char [] массивы.
const char* original = "blablabla";
int len = strlen(original);
char* encrypted = malloc(len + 1);
int key = 'x';
for (int i = 0; i < len; ++i) {
encrypted[i] = (char)((original[i]^(key + i)) & 0xff);
}
encrypted[len] = '\0';
// ... do work with encrypted
free(encrypted);
Если «не шифруется» не собираемся быть очень большими, и нет никаких шансов на рекурсию, вы можете заменить «таНос» с «ALLOCA», чтобы выделить память на стеке, в этом случае вы не» нужно освободить его.
const char* original = "blablabla";
int len = strlen(original);
char* encrypted = alloca(len + 1);
int key = 'x';
for (int i = 0; i < len; ++i) {
encrypted[i] = (char)((original[i]^(key + i)) & 0xff);
}
encrypted[len] = '\0';
// ... do work with encrypted
// do not free encrypted, it's on the stack.
Эта версия больше похожа на версию на С ++, так как зашифрованная информация автоматически исчезает, когда она выходит за пределы области видимости.
Пожалуйста, пост «C» преобразования, как вы есть. – kfsone
'malloc' массив' char', достаточно большой, чтобы соответствовать зашифрованной строке, а затем делать то, что уже делает код, за исключением того, что это будет 'ecrypted [temp] =' вместо 'encrypted + ='. – Michael
Какова ошибка, сгенерированная компилятором? –