用c语言基于朴素固定长度编码编写字符串编码的代码并计算一串字符串的编码长度
时间: 2023-11-22 08:56:37 浏览: 36
以下是基于朴素固定长度编码的字符串编码代码:
```c
#include <stdio.h>
#include <string.h>
#define CODE_LEN 5 // 编码长度
void encoding(char *str, int len, char *code, int code_len) {
int i, j, k;
for (i = 0; i < len; i++) {
k = str[i];
for (j = code_len - 1; j >= 0; j--) {
code[j] = k % 2 + '0';
k /= 2;
}
code += code_len;
}
}
int main() {
char str[100], code[100*CODE_LEN+1];
int len, code_len;
printf("请输入要编码的字符串:");
scanf("%s", str);
len = strlen(str);
code_len = len * CODE_LEN;
encoding(str, len, code, CODE_LEN);
printf("编码后的结果为:%s\n", code);
printf("编码长度为:%d\n", code_len);
return 0;
}
```
其中,`CODE_LEN` 定义了编码长度,这里默认为 5。函数 `encoding` 接收一个字符串 `str`,字符串长度 `len`,编码后的结果 `code` 和编码长度 `code_len`,通过朴素固定长度编码将字符串编码成二进制数字字符串。
主函数中,首先输入要编码的字符串,并计算出编码长度。然后调用 `encoding` 函数进行编码,并输出编码后的结果和编码长度。
注意,编码长度的计算方法是将字符串长度乘以编码长度。因为一个字符编码后是一个长度为 `CODE_LEN` 的二进制数字字符串。因此,如果字符串长度为 `len`,那么编码后的字符串长度就是 `len * CODE_LEN`。
下面是一个示例输入和输出:
```
请输入要编码的字符串:hello
编码后的结果为:0110100001100101011011000110110001101111
编码长度为:40
```
可以看到,输入的字符串 "hello" 经过编码后变成了一个长度为 40 的二进制数字字符串。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)