我已经使用此功能来提取字符串的前两个字符:
string get_salt(string hash)
{
char pre_salt[2];
for (int i = 0; i < 2; i++)
{
pre_salt[i] = hash[i];
}
string salt = pre_salt;
printf("%s\n", salt);
return(salt);
}
但是当我使用前两个字符为“ 50”(我正在使用的示例)的字符串运行它时,得到以下输出:
50r®B
老实说,我不知道为什么将三个额外的字符添加到结果字符串中。
您缺少字符串的NUL终止符'\ 0',因此它将一直打印直到找到一个为止。像这样声明:
char pre_salt[3]={0,0,0};
问题已解决。