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

#include <stdio.h> void pack_string(char s[]){ int i=0; while (s[i]!='.') { char ch=s[i]; int cnt =0; while(s[i]==ch) { cnt++; i++; } printf("%c%d",ch,cnt); } }
这段代码定义了一个函数 `pack_string`,它遍历一个字符串直到遇到句点 '.',并统计每个连续相同字符的出现次数,然后以“字符+次数”的格式输出。例如,输入 "aaab." 会输出 "a3b1"。

代码中存在一个潜在问题:当字符串中没有句点时,循环会一直运行直到遇到字符串结束符 '\0',这可能导致未定义行为。另外,函数没有处理字符串结束符的情况。

- 检查循环条件:当前条件是 `s[i]!='.'`,但字符串可能以 '\0' 结尾而不是句点。考虑如何正确处理字符串的结束,避免无限循环或越界访问。
- 注意输出格式:每次遇到新字符时都会打印,但最后一个字符组之后可能缺少换行或其他分隔,思考是否需要调整输出结构。