大概你需要將你的字符串轉換爲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
編譯器生成的錯誤是什麼? –