我在playfair密码上工作,我有一个问题。
如果下一个字母重复,我需要在字符串中添加字母X. 以下示例:HELLOWORLD 将该字符串分成两对(HE LL OW OR LD),如果它重复,则添加X.(只有当该对重复时才需要添加X. 之后:HE LX LO WO RL D - > HELXLOWORLD
我的代码:
for (j = 0, i = 0; i < len_text; i++, j++) {
if (i % 2 == 0) {
if (my_text[i] == my_text[i+1]) {
text_x[j] = my_text[i];
i++;
text_x[j+1] = 'X';
j++;
}
else {
text_x[j] = my_text[i];
}
}
else if (i % 2 != 0) {
text_x[j] = text[i];
}
}
我的代码无法正常运行。你能帮助我吗?谢谢。
答案 0 :(得分:-1)
如果我正确理解你的问题,你可以做这样的事情。您目前正在进行此操作的方式看起来可能超出i
范围。确保text_x
是一个足够大的缓冲区,可以容纳您插入的额外字符(即最多len_text + len_text / 2
)。
for (j = 0, i = 0; i < len_text - 1; i+=2, j+=2) {
text_x[j] = my_text[i];
if (my_text[i] == my_text[i+1]) {
text_x[j+1] = 'X';
j++;
}
text_x[j+1] = my_text[i+1];
}