我必须对字符串数组进行编码,以便: 1. 编码输出是一个具有最小可能长度的单个字符串 2. 您应该能够稍后解码该字符串。字符串仅由小写字符组成。我不太擅长使用位域。. 当我将字母分配给 enc_string 时,我是否只需右移 3 位?或者我可以使用我创建的结构?另外我怎样才能确保我真正节省了空间。我不能使用 sizeof 因为它以字节为单位返回?
我该如何做位包装。
#include <stdio.h>
typedef struct{
int val:5;
}input;
char* encode_string(char **str_arr,int len, int *ret_len){
int i = 0;
int j = 0;
int k = 0;
char *enc_string = (char*)malloc(10*len*sizeof(char));
for(i=0;i<len;i++){
for(j=0;j<strlen(str_arr[i]); j++){
enc_string[k] = str_arr[i][j]; // str_arr[i][j]>>3
k++;
}
enc_string[k++] = '*';
}
if(k>0){
enc_string[k]='\0';
*ret_len = k;
}
return enc_string;
}
int main()
{
char* str[] = {"abcd","fghi","jkl"};
char *enc_string;
int enc_len = 0;
enc_string = encode_string(str,3,&enc_len);
printf("Encoded string %s size %d \n",enc_string,enc_len);
return 0;
}