大概你需要将你的字符串转换为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);
如果“加密”是永远不会是非常大的,而且也没有递归的机会,你可以替换“的malloc”与“ALLOCA”来分配堆栈上的内存,在这种情况下,你不” t需要释放它。
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++版本,因为加密在超出范围时会自动消失。
请张贴的“C”转换为你拥有它。 – kfsone
'malloc'一个'char'数组足够大以适应加密的字符串,然后基本上做了什么代码已经做了,除了'ecrypted [temp] ='而不是'encrypted + ='。 – Michael
编译器生成的错误是什么? –