在 C 中打印相同 characters.RLE 的正确数量的问题

Problem with printing the correct number of same characters.RLE in C

我无法在 RLE 程序中打印出正确的字符数。我已经让它与数组一起工作,我正在寻找一个不同的 approach.Here 是代码:

 #include <stdio.h>

int main ()
{
    char elem,elem1;
    int n=1;
    while ((elem=getchar())!=EOF && elem!='\n'){
        if ((elem1=getchar())==elem){
            n++;
        }
        printf("%d%c",n,elem);
        n=1;
    }
    printf("\n");
    return 0;
}

例如,当我输入 --> ttyyy 时,输出是 2t2y1y。已经尝试添加 else 语句,但它从未真正进入 statement.Output should have been 2t3y.

提前致谢。

试试这个:

基本上,我们把所有的字符都算进去,只要和之前的一样。当字符改变时,我们打印 char 和旧计数器并将我们的计数器设置回 1。

  • old_elem 保留最后一个字符
  • elem 持有当前字符

(我们将 old_elem 设置为某个初始值,以便我们可以检查它是否是遇到的第一个字符)

#include <stdio.h>

int main () {
    char elem;
    char old_elem = '$';
    int n=1;
    while ((elem=getchar())!=EOF && elem!='\n'){
        if (elem==old_elem) { 
            n++; 
        }
        else { 
            if ( old_elem!='$') { printf("%d%c",n,elem); } 
            n=1; 
        }
        old_elem = elem;
    }
    printf("%d%c\n",n,old_elem);

    return 0;
}

示例输入:

ttyyy

输出:

2t3y