Онлайн компилятор C

#include <stdio.h> void pack_string(char s[]){ int sum=1,i=1; char num=s[0]; while(s[i]!='\0'){ if(s[i]==num){ sum++; num=s[i]; }else { printf("%c%d",num,sum); sum=1; num=s[i]; }i++; } } int main() { int a[]="aaaaabbbc."; pack_string(a); return 0; }
这段代码试图实现一个字符串压缩功能,将连续相同的字符压缩成“字符+重复次数”的形式。但代码中存在几个问题。

- 在 `main` 函数中,`int a[]="aaaaabbbc.";` 这一行有问题。字符串应该用 `char` 数组来存储,而不是 `int` 数组。这会导致类型不匹配,可能产生意外行为。

- `pack_string` 函数在循环结束后,没有处理最后一组连续字符。当循环退出时,最后一组字符的计数还没有被打印出来。

- 变量 `num` 的命名容易混淆,它实际上存储的是当前正在统计的字符,而不是数字。