我研究 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];
}
}
我的代码无法正常工作。你能帮助我吗?谢谢。
最佳答案
如果我正确理解你的问题,你可以这样做。您当前执行此操作的方式看起来可能会超出 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];
}
关于c - 如果重复则添加字母 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43008985/