首先,英语不是我的主要语言。我是C的新手,我的一个任务就是在特定情况下进行RLE算法,它只计算在以下条件下:
'aaabb'
'bbbrr'
'ggskkkk'
等......
在这种情况下:'aaaaaayyy'
,
我已经完成了这段代码:
void StringRLE(char *pointer)
{
char rle[strlen(pointer)];
int i=0;
int rleCount =1;
char *s = pointer+1,ch;
while(*pointer!= '\0')
{
if(*pointer==*s)
rleCount++;
else
{
itoa(rleCount, rle, 10);
ch = *pointer[i];
strcat(rle, ch);
puts(rle);
rleCount = 1;
}
pointer++;
s++;
i++;
}
}
但是当我使用itoa
第二次将int
转换为字符串时,当它计算'y'时,itoa
会覆盖RLE字符串。为什么,我怎么解决它?
答案 0 :(得分:0)
以下代码适合我。做了一些改动,使其编译和运行。
void StringRLE(char *pointer)
{
char *rle = new char[strlen(pointer)];
int i=0;
int rleCount = 1;
char *s = pointer+1, ch[2] = {0,0};
while(*pointer!= '\0')
{
if(*pointer==*s)
rleCount++;
else
{
itoa(rleCount, rle, 10);
ch[0] = *pointer;
strcat(rle, ch);
puts(rle);
rleCount = 1;
}
pointer++;
s++;
i++;
}
}