编写一个C语言程序,实现连续重复字符的字符串压缩。例如:输入“aaaabbc”输出:“4a2bc”;输入“cccddecc”,输出“3c2de2c”。要求使用到回调函数。
时间: 2023-12-15 14:07:38 浏览: 81
以下是一个使用回调函数实现连续重复字符的字符串压缩的C语言程序,满足您的要求。
```c
#include <stdio.h>
#include <string.h>
typedef void (*CompressionCallback)(int count, char character);
void compressString(char *str, CompressionCallback callback) {
int len = strlen(str);
int count = 1;
for (int i = 0; i < len; i++) {
if (str[i] == str[i + 1]) {
count++;
} else {
callback(count, str[i]);
count = 1;
}
}
}
void printCompressed(int count, char character) {
if (count > 1) {
printf("%d", count);
}
printf("%c", character);
}
int main() {
char str1[] = "aaaabbc";
char str2[] = "cccddecc";
printf("使用回调函数压缩字符串:\n");
printf("输入: %s\n", str1);
printf("输出: ");
compressString(str1, printCompressed);
printf("\n\n");
printf("输入: %s\n", str2);
printf("输出: ");
compressString(str2, printCompressed);
return 0;
}
```
输出结果为:
```
使用回调函数压缩字符串:
输入: aaaabbc
输出: 4a2bc
输入: cccddecc
输出: 3c2de2c
```
希望能满足您的需求!如果有任何疑问,请随时提问。
阅读全文