c - 如果重复则添加字母 C

标签 c string

我研究 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/

相关文章:

c - C 中的 () 运算符

java - 如何在数组字符串中搜索非字母字符?

string - 字符串连接的 '+' 和 '&' 之间有什么区别吗?

c - 数组元素是 C 中字符串数组中的变量

javascript - 正则表达式用jQuery中的特殊字符替换子字符串

c - C中的串行通信

android - 为安卓使用 pjsua

c - 如何在 C 中打印出现的字母和单词(鼓励使用指针)

c - 在uint8 *中填充 bool 变量

c - 字符串操作和 rot-13