大家好,我创建了一个简单的小密码函数,它可以获取一个指向字符串的指针,然后将每个字节更改为其相应的加密字符,如果您通过该函数运行它,它会将文本转换回纯文本。
不过我的问题是我想将此函数与const char *p = "...";
声明的变量一起使用,但这根本不可能,因为它们在运行时加载到内存中并且不可写。
这是我的功能。
char *Cipher(char *str)
{
char *p = str;
while(*p)
{
if(*p >= ' ' && *p <= 'O')
{
*p = ((*p + 48) % 127);
}
else if(*p >= 'P' && *p <= '~')
{
*p = ((*p - 48) % 127);
}
p++;
}
return str;
}
它只需要一个指向字符串的指针,然后替换所有字符并将指针返回到字符串(这样我就可以在其他函数中使用它,例如 printf 或任何接受char*
作为参数的函数)。
现在我知道为了使用这些const char*
指针,我必须将它们复制到本地内存中以修改它们,但是如何返回指向新编码或解码的字符串的指针,以便我可以将它传递给其他函数。(最终目标是将它包含在一个简单的聊天程序中,我想把它称为类似的东西send(sock, Cipher(PRE_HEADER), strlen(PRE_HEADER));
)而且我认为我这样做的方式不会是线程安全的,所以以防万一我决定将它与线程一起使用应用程序我必须进行哪些更改?
我也接受简单字符串替换密码的其他替代代码。
任何帮助,将不胜感激。谢谢你。